﻿using System;
using Lockstep.Math;

namespace Lockstep.Math
{
    public static class LUTSinCos
    {
        public static readonly int BITS;

        public static readonly int MASK;

        public static readonly int COUNT;

        public static readonly int FACTOR;

        public static readonly int NOM_MUL;

        public static readonly int[] sin_table;

        public static readonly int[] cos_table;

        static LUTSinCos()
        {
            BITS = 12;
            MASK = ~(-1 << BITS);
            COUNT = MASK + 1;
            FACTOR = 10000;
            NOM_MUL = FACTOR * COUNT;
            sin_table = new int[]
            {
                0,
                15,
                31,
                46,
                61,
                77,
                92,
                107,
                123,
                138,
                153,
                169,
                184,
                199,
                215,
                230,
                245,
                261,
                276,
                291,
                307,
                322,
                337,
                353,
                368,
                383,
                399,
                414,
                429,
                445,
                460,
                475,
                491,
                506,
                521,
                537,
                552,
                567,
                583,
                598,
                613,
                629,
                644,
                659,
                674,
                690,
                705,
                720,
                736,
                751,
                766,
                782,
                797,
                812,
                827,
                843,
                858,
                873,
                889,
                904,
                919,
                934,
                950,
                965,
                980,
                995,
                1011,
                1026,
                1041,
                1056,
                1072,
                1087,
                1102,
                1117,
                1133,
                1148,
                1163,
                1178,
                1194,
                1209,
                1224,
                1239,
                1255,
                1270,
                1285,
                1300,
                1315,
                1331,
                1346,
                1361,
                1376,
                1391,
                1407,
                1422,
                1437,
                1452,
                1467,
                1482,
                1498,
                1513,
                1528,
                1543,
                1558,
                1573,
                1589,
                1604,
                1619,
                1634,
                1649,
                1664,
                1679,
                1695,
                1710,
                1725,
                1740,
                1755,
                1770,
                1785,
                1800,
                1815,
                1830,
                1845,
                1861,
                1876,
                1891,
                1906,
                1921,
                1936,
                1951,
                1966,
                1981,
                1996,
                2011,
                2026,
                2041,
                2056,
                2071,
                2086,
                2101,
                2116,
                2131,
                2146,
                2161,
                2176,
                2191,
                2206,
                2221,
                2236,
                2251,
                2266,
                2281,
                2296,
                2311,
                2326,
                2340,
                2355,
                2370,
                2385,
                2400,
                2415,
                2430,
                2445,
                2460,
                2474,
                2489,
                2504,
                2519,
                2534,
                2549,
                2563,
                2578,
                2593,
                2608,
                2623,
                2638,
                2652,
                2667,
                2682,
                2697,
                2711,
                2726,
                2741,
                2756,
                2770,
                2785,
                2800,
                2815,
                2829,
                2844,
                2859,
                2873,
                2888,
                2903,
                2918,
                2932,
                2947,
                2962,
                2976,
                2991,
                3005,
                3020,
                3035,
                3049,
                3064,
                3078,
                3093,
                3108,
                3122,
                3137,
                3151,
                3166,
                3180,
                3195,
                3210,
                3224,
                3239,
                3253,
                3268,
                3282,
                3297,
                3311,
                3326,
                3340,
                3354,
                3369,
                3383,
                3398,
                3412,
                3427,
                3441,
                3455,
                3470,
                3484,
                3499,
                3513,
                3527,
                3542,
                3556,
                3570,
                3585,
                3599,
                3613,
                3628,
                3642,
                3656,
                3670,
                3685,
                3699,
                3713,
                3727,
                3742,
                3756,
                3770,
                3784,
                3798,
                3813,
                3827,
                3841,
                3855,
                3869,
                3883,
                3898,
                3912,
                3926,
                3940,
                3954,
                3968,
                3982,
                3996,
                4010,
                4024,
                4038,
                4052,
                4066,
                4080,
                4094,
                4108,
                4122,
                4136,
                4150,
                4164,
                4178,
                4192,
                4206,
                4220,
                4234,
                4248,
                4262,
                4276,
                4289,
                4303,
                4317,
                4331,
                4345,
                4359,
                4372,
                4386,
                4400,
                4414,
                4427,
                4441,
                4455,
                4469,
                4482,
                4496,
                4510,
                4523,
                4537,
                4551,
                4564,
                4578,
                4592,
                4605,
                4619,
                4633,
                4646,
                4660,
                4673,
                4687,
                4700,
                4714,
                4727,
                4741,
                4755,
                4768,
                4781,
                4795,
                4808,
                4822,
                4835,
                4849,
                4862,
                4876,
                4889,
                4902,
                4916,
                4929,
                4942,
                4956,
                4969,
                4982,
                4996,
                5009,
                5022,
                5035,
                5049,
                5062,
                5075,
                5088,
                5102,
                5115,
                5128,
                5141,
                5154,
                5167,
                5180,
                5194,
                5207,
                5220,
                5233,
                5246,
                5259,
                5272,
                5285,
                5298,
                5311,
                5324,
                5337,
                5350,
                5363,
                5376,
                5389,
                5402,
                5415,
                5428,
                5440,
                5453,
                5466,
                5479,
                5492,
                5505,
                5517,
                5530,
                5543,
                5556,
                5568,
                5581,
                5594,
                5607,
                5619,
                5632,
                5645,
                5657,
                5670,
                5683,
                5695,
                5708,
                5720,
                5733,
                5746,
                5758,
                5771,
                5783,
                5796,
                5808,
                5821,
                5833,
                5846,
                5858,
                5870,
                5883,
                5895,
                5908,
                5920,
                5932,
                5945,
                5957,
                5969,
                5982,
                5994,
                6006,
                6018,
                6031,
                6043,
                6055,
                6067,
                6079,
                6092,
                6104,
                6116,
                6128,
                6140,
                6152,
                6164,
                6176,
                6189,
                6201,
                6213,
                6225,
                6237,
                6249,
                6261,
                6273,
                6284,
                6296,
                6308,
                6320,
                6332,
                6344,
                6356,
                6368,
                6379,
                6391,
                6403,
                6415,
                6427,
                6438,
                6450,
                6462,
                6473,
                6485,
                6497,
                6508,
                6520,
                6532,
                6543,
                6555,
                6567,
                6578,
                6590,
                6601,
                6613,
                6624,
                6636,
                6647,
                6659,
                6670,
                6681,
                6693,
                6704,
                6716,
                6727,
                6738,
                6750,
                6761,
                6772,
                6784,
                6795,
                6806,
                6817,
                6828,
                6840,
                6851,
                6862,
                6873,
                6884,
                6895,
                6907,
                6918,
                6929,
                6940,
                6951,
                6962,
                6973,
                6984,
                6995,
                7006,
                7017,
                7028,
                7038,
                7049,
                7060,
                7071,
                7082,
                7093,
                7104,
                7114,
                7125,
                7136,
                7147,
                7157,
                7168,
                7179,
                7189,
                7200,
                7211,
                7221,
                7232,
                7242,
                7253,
                7264,
                7274,
                7285,
                7295,
                7306,
                7316,
                7327,
                7337,
                7347,
                7358,
                7368,
                7379,
                7389,
                7399,
                7410,
                7420,
                7430,
                7440,
                7451,
                7461,
                7471,
                7481,
                7491,
                7502,
                7512,
                7522,
                7532,
                7542,
                7552,
                7562,
                7572,
                7582,
                7592,
                7602,
                7612,
                7622,
                7632,
                7642,
                7652,
                7662,
                7671,
                7681,
                7691,
                7701,
                7711,
                7720,
                7730,
                7740,
                7750,
                7759,
                7769,
                7779,
                7788,
                7798,
                7807,
                7817,
                7827,
                7836,
                7846,
                7855,
                7865,
                7874,
                7883,
                7893,
                7902,
                7912,
                7921,
                7930,
                7940,
                7949,
                7958,
                7968,
                7977,
                7986,
                7995,
                8005,
                8014,
                8023,
                8032,
                8041,
                8050,
                8059,
                8068,
                8078,
                8087,
                8096,
                8105,
                8114,
                8123,
                8131,
                8140,
                8149,
                8158,
                8167,
                8176,
                8185,
                8193,
                8202,
                8211,
                8220,
                8228,
                8237,
                8246,
                8255,
                8263,
                8272,
                8280,
                8289,
                8298,
                8306,
                8315,
                8323,
                8332,
                8340,
                8349,
                8357,
                8365,
                8374,
                8382,
                8391,
                8399,
                8407,
                8416,
                8424,
                8432,
                8440,
                8449,
                8457,
                8465,
                8473,
                8481,
                8489,
                8497,
                8505,
                8514,
                8522,
                8530,
                8538,
                8546,
                8554,
                8561,
                8569,
                8577,
                8585,
                8593,
                8601,
                8609,
                8616,
                8624,
                8632,
                8640,
                8647,
                8655,
                8663,
                8670,
                8678,
                8686,
                8693,
                8701,
                8708,
                8716,
                8723,
                8731,
                8738,
                8746,
                8753,
                8761,
                8768,
                8775,
                8783,
                8790,
                8797,
                8805,
                8812,
                8819,
                8826,
                8834,
                8841,
                8848,
                8855,
                8862,
                8869,
                8876,
                8883,
                8890,
                8897,
                8904,
                8911,
                8918,
                8925,
                8932,
                8939,
                8946,
                8953,
                8960,
                8966,
                8973,
                8980,
                8987,
                8993,
                9000,
                9007,
                9013,
                9020,
                9027,
                9033,
                9040,
                9046,
                9053,
                9059,
                9066,
                9072,
                9079,
                9085,
                9092,
                9098,
                9104,
                9111,
                9117,
                9123,
                9130,
                9136,
                9142,
                9148,
                9154,
                9161,
                9167,
                9173,
                9179,
                9185,
                9191,
                9197,
                9203,
                9209,
                9215,
                9221,
                9227,
                9233,
                9239,
                9245,
                9250,
                9256,
                9262,
                9268,
                9274,
                9279,
                9285,
                9291,
                9296,
                9302,
                9308,
                9313,
                9319,
                9324,
                9330,
                9335,
                9341,
                9346,
                9352,
                9357,
                9363,
                9368,
                9373,
                9379,
                9384,
                9389,
                9395,
                9400,
                9405,
                9410,
                9415,
                9421,
                9426,
                9431,
                9436,
                9441,
                9446,
                9451,
                9456,
                9461,
                9466,
                9471,
                9476,
                9481,
                9486,
                9490,
                9495,
                9500,
                9505,
                9510,
                9514,
                9519,
                9524,
                9528,
                9533,
                9538,
                9542,
                9547,
                9551,
                9556,
                9560,
                9565,
                9569,
                9574,
                9578,
                9583,
                9587,
                9591,
                9596,
                9600,
                9604,
                9609,
                9613,
                9617,
                9621,
                9625,
                9630,
                9634,
                9638,
                9642,
                9646,
                9650,
                9654,
                9658,
                9662,
                9666,
                9670,
                9674,
                9678,
                9681,
                9685,
                9689,
                9693,
                9697,
                9700,
                9704,
                9708,
                9711,
                9715,
                9719,
                9722,
                9726,
                9729,
                9733,
                9736,
                9740,
                9743,
                9747,
                9750,
                9754,
                9757,
                9760,
                9764,
                9767,
                9770,
                9774,
                9777,
                9780,
                9783,
                9786,
                9789,
                9793,
                9796,
                9799,
                9802,
                9805,
                9808,
                9811,
                9814,
                9817,
                9820,
                9823,
                9825,
                9828,
                9831,
                9834,
                9837,
                9839,
                9842,
                9845,
                9847,
                9850,
                9853,
                9855,
                9858,
                9861,
                9863,
                9866,
                9868,
                9871,
                9873,
                9875,
                9878,
                9880,
                9883,
                9885,
                9887,
                9890,
                9892,
                9894,
                9896,
                9898,
                9901,
                9903,
                9905,
                9907,
                9909,
                9911,
                9913,
                9915,
                9917,
                9919,
                9921,
                9923,
                9925,
                9927,
                9929,
                9930,
                9932,
                9934,
                9936,
                9937,
                9939,
                9941,
                9942,
                9944,
                9946,
                9947,
                9949,
                9950,
                9952,
                9953,
                9955,
                9956,
                9958,
                9959,
                9960,
                9962,
                9963,
                9964,
                9966,
                9967,
                9968,
                9969,
                9971,
                9972,
                9973,
                9974,
                9975,
                9976,
                9977,
                9978,
                9979,
                9980,
                9981,
                9982,
                9983,
                9984,
                9985,
                9986,
                9986,
                9987,
                9988,
                9989,
                9989,
                9990,
                9991,
                9991,
                9992,
                9993,
                9993,
                9994,
                9994,
                9995,
                9995,
                9996,
                9996,
                9997,
                9997,
                9997,
                9998,
                9998,
                9998,
                9999,
                9999,
                9999,
                9999,
                9999,
                10000,
                10000,
                10000,
                10000,
                10000,
                10000,
                10000,
                10000,
                10000,
                10000,
                10000,
                10000,
                10000,
                9999,
                9999,
                9999,
                9999,
                9999,
                9998,
                9998,
                9998,
                9997,
                9997,
                9997,
                9996,
                9996,
                9995,
                9995,
                9994,
                9994,
                9993,
                9993,
                9992,
                9991,
                9991,
                9990,
                9989,
                9989,
                9988,
                9987,
                9986,
                9986,
                9985,
                9984,
                9983,
                9982,
                9981,
                9980,
                9979,
                9978,
                9977,
                9976,
                9975,
                9974,
                9973,
                9972,
                9971,
                9969,
                9968,
                9967,
                9966,
                9964,
                9963,
                9962,
                9960,
                9959,
                9958,
                9956,
                9955,
                9953,
                9952,
                9950,
                9949,
                9947,
                9946,
                9944,
                9942,
                9941,
                9939,
                9937,
                9936,
                9934,
                9932,
                9930,
                9929,
                9927,
                9925,
                9923,
                9921,
                9919,
                9917,
                9915,
                9913,
                9911,
                9909,
                9907,
                9905,
                9903,
                9901,
                9898,
                9896,
                9894,
                9892,
                9890,
                9887,
                9885,
                9883,
                9880,
                9878,
                9875,
                9873,
                9871,
                9868,
                9866,
                9863,
                9861,
                9858,
                9855,
                9853,
                9850,
                9847,
                9845,
                9842,
                9839,
                9837,
                9834,
                9831,
                9828,
                9825,
                9823,
                9820,
                9817,
                9814,
                9811,
                9808,
                9805,
                9802,
                9799,
                9796,
                9793,
                9789,
                9786,
                9783,
                9780,
                9777,
                9774,
                9770,
                9767,
                9764,
                9760,
                9757,
                9754,
                9750,
                9747,
                9743,
                9740,
                9736,
                9733,
                9729,
                9726,
                9722,
                9719,
                9715,
                9711,
                9708,
                9704,
                9700,
                9697,
                9693,
                9689,
                9685,
                9681,
                9678,
                9674,
                9670,
                9666,
                9662,
                9658,
                9654,
                9650,
                9646,
                9642,
                9638,
                9634,
                9630,
                9625,
                9621,
                9617,
                9613,
                9609,
                9604,
                9600,
                9596,
                9591,
                9587,
                9583,
                9578,
                9574,
                9569,
                9565,
                9560,
                9556,
                9551,
                9547,
                9542,
                9538,
                9533,
                9528,
                9524,
                9519,
                9514,
                9510,
                9505,
                9500,
                9495,
                9490,
                9486,
                9481,
                9476,
                9471,
                9466,
                9461,
                9456,
                9451,
                9446,
                9441,
                9436,
                9431,
                9426,
                9421,
                9415,
                9410,
                9405,
                9400,
                9395,
                9389,
                9384,
                9379,
                9373,
                9368,
                9363,
                9357,
                9352,
                9346,
                9341,
                9335,
                9330,
                9324,
                9319,
                9313,
                9308,
                9302,
                9296,
                9291,
                9285,
                9279,
                9274,
                9268,
                9262,
                9256,
                9250,
                9245,
                9239,
                9233,
                9227,
                9221,
                9215,
                9209,
                9203,
                9197,
                9191,
                9185,
                9179,
                9173,
                9167,
                9161,
                9154,
                9148,
                9142,
                9136,
                9130,
                9123,
                9117,
                9111,
                9104,
                9098,
                9092,
                9085,
                9079,
                9072,
                9066,
                9059,
                9053,
                9046,
                9040,
                9033,
                9027,
                9020,
                9013,
                9007,
                9000,
                8993,
                8987,
                8980,
                8973,
                8966,
                8960,
                8953,
                8946,
                8939,
                8932,
                8925,
                8918,
                8911,
                8904,
                8897,
                8890,
                8883,
                8876,
                8869,
                8862,
                8855,
                8848,
                8841,
                8834,
                8826,
                8819,
                8812,
                8805,
                8797,
                8790,
                8783,
                8775,
                8768,
                8761,
                8753,
                8746,
                8738,
                8731,
                8723,
                8716,
                8708,
                8701,
                8693,
                8686,
                8678,
                8670,
                8663,
                8655,
                8647,
                8640,
                8632,
                8624,
                8616,
                8609,
                8601,
                8593,
                8585,
                8577,
                8569,
                8561,
                8554,
                8546,
                8538,
                8530,
                8522,
                8514,
                8505,
                8497,
                8489,
                8481,
                8473,
                8465,
                8457,
                8449,
                8440,
                8432,
                8424,
                8416,
                8407,
                8399,
                8391,
                8382,
                8374,
                8365,
                8357,
                8349,
                8340,
                8332,
                8323,
                8315,
                8306,
                8298,
                8289,
                8280,
                8272,
                8263,
                8255,
                8246,
                8237,
                8228,
                8220,
                8211,
                8202,
                8193,
                8185,
                8176,
                8167,
                8158,
                8149,
                8140,
                8131,
                8123,
                8114,
                8105,
                8096,
                8087,
                8078,
                8068,
                8059,
                8050,
                8041,
                8032,
                8023,
                8014,
                8005,
                7995,
                7986,
                7977,
                7968,
                7958,
                7949,
                7940,
                7930,
                7921,
                7912,
                7902,
                7893,
                7883,
                7874,
                7865,
                7855,
                7846,
                7836,
                7827,
                7817,
                7807,
                7798,
                7788,
                7779,
                7769,
                7759,
                7750,
                7740,
                7730,
                7720,
                7711,
                7701,
                7691,
                7681,
                7671,
                7662,
                7652,
                7642,
                7632,
                7622,
                7612,
                7602,
                7592,
                7582,
                7572,
                7562,
                7552,
                7542,
                7532,
                7522,
                7512,
                7502,
                7491,
                7481,
                7471,
                7461,
                7451,
                7440,
                7430,
                7420,
                7410,
                7399,
                7389,
                7379,
                7368,
                7358,
                7347,
                7337,
                7327,
                7316,
                7306,
                7295,
                7285,
                7274,
                7264,
                7253,
                7242,
                7232,
                7221,
                7211,
                7200,
                7189,
                7179,
                7168,
                7157,
                7147,
                7136,
                7125,
                7114,
                7104,
                7093,
                7082,
                7071,
                7060,
                7049,
                7038,
                7028,
                7017,
                7006,
                6995,
                6984,
                6973,
                6962,
                6951,
                6940,
                6929,
                6918,
                6907,
                6895,
                6884,
                6873,
                6862,
                6851,
                6840,
                6828,
                6817,
                6806,
                6795,
                6784,
                6772,
                6761,
                6750,
                6738,
                6727,
                6716,
                6704,
                6693,
                6681,
                6670,
                6659,
                6647,
                6636,
                6624,
                6613,
                6601,
                6590,
                6578,
                6567,
                6555,
                6543,
                6532,
                6520,
                6508,
                6497,
                6485,
                6473,
                6462,
                6450,
                6438,
                6427,
                6415,
                6403,
                6391,
                6379,
                6368,
                6356,
                6344,
                6332,
                6320,
                6308,
                6296,
                6284,
                6273,
                6261,
                6249,
                6237,
                6225,
                6213,
                6201,
                6189,
                6176,
                6164,
                6152,
                6140,
                6128,
                6116,
                6104,
                6092,
                6079,
                6067,
                6055,
                6043,
                6031,
                6018,
                6006,
                5994,
                5982,
                5969,
                5957,
                5945,
                5932,
                5920,
                5908,
                5895,
                5883,
                5870,
                5858,
                5846,
                5833,
                5821,
                5808,
                5796,
                5783,
                5771,
                5758,
                5746,
                5733,
                5720,
                5708,
                5695,
                5683,
                5670,
                5657,
                5645,
                5632,
                5619,
                5607,
                5594,
                5581,
                5568,
                5556,
                5543,
                5530,
                5517,
                5505,
                5492,
                5479,
                5466,
                5453,
                5440,
                5428,
                5415,
                5402,
                5389,
                5376,
                5363,
                5350,
                5337,
                5324,
                5311,
                5298,
                5285,
                5272,
                5259,
                5246,
                5233,
                5220,
                5207,
                5194,
                5180,
                5167,
                5154,
                5141,
                5128,
                5115,
                5102,
                5088,
                5075,
                5062,
                5049,
                5035,
                5022,
                5009,
                4996,
                4982,
                4969,
                4956,
                4942,
                4929,
                4916,
                4902,
                4889,
                4876,
                4862,
                4849,
                4835,
                4822,
                4808,
                4795,
                4781,
                4768,
                4755,
                4741,
                4727,
                4714,
                4700,
                4687,
                4673,
                4660,
                4646,
                4633,
                4619,
                4605,
                4592,
                4578,
                4564,
                4551,
                4537,
                4523,
                4510,
                4496,
                4482,
                4469,
                4455,
                4441,
                4427,
                4414,
                4400,
                4386,
                4372,
                4359,
                4345,
                4331,
                4317,
                4303,
                4289,
                4276,
                4262,
                4248,
                4234,
                4220,
                4206,
                4192,
                4178,
                4164,
                4150,
                4136,
                4122,
                4108,
                4094,
                4080,
                4066,
                4052,
                4038,
                4024,
                4010,
                3996,
                3982,
                3968,
                3954,
                3940,
                3926,
                3912,
                3898,
                3883,
                3869,
                3855,
                3841,
                3827,
                3813,
                3798,
                3784,
                3770,
                3756,
                3742,
                3727,
                3713,
                3699,
                3685,
                3670,
                3656,
                3642,
                3628,
                3613,
                3599,
                3585,
                3570,
                3556,
                3542,
                3527,
                3513,
                3499,
                3484,
                3470,
                3455,
                3441,
                3427,
                3412,
                3398,
                3383,
                3369,
                3354,
                3340,
                3326,
                3311,
                3297,
                3282,
                3268,
                3253,
                3239,
                3224,
                3210,
                3195,
                3180,
                3166,
                3151,
                3137,
                3122,
                3108,
                3093,
                3078,
                3064,
                3049,
                3035,
                3020,
                3005,
                2991,
                2976,
                2962,
                2947,
                2932,
                2918,
                2903,
                2888,
                2873,
                2859,
                2844,
                2829,
                2815,
                2800,
                2785,
                2770,
                2756,
                2741,
                2726,
                2711,
                2697,
                2682,
                2667,
                2652,
                2638,
                2623,
                2608,
                2593,
                2578,
                2563,
                2549,
                2534,
                2519,
                2504,
                2489,
                2474,
                2460,
                2445,
                2430,
                2415,
                2400,
                2385,
                2370,
                2355,
                2340,
                2326,
                2311,
                2296,
                2281,
                2266,
                2251,
                2236,
                2221,
                2206,
                2191,
                2176,
                2161,
                2146,
                2131,
                2116,
                2101,
                2086,
                2071,
                2056,
                2041,
                2026,
                2011,
                1996,
                1981,
                1966,
                1951,
                1936,
                1921,
                1906,
                1891,
                1876,
                1861,
                1845,
                1830,
                1815,
                1800,
                1785,
                1770,
                1755,
                1740,
                1725,
                1710,
                1695,
                1679,
                1664,
                1649,
                1634,
                1619,
                1604,
                1589,
                1573,
                1558,
                1543,
                1528,
                1513,
                1498,
                1482,
                1467,
                1452,
                1437,
                1422,
                1407,
                1391,
                1376,
                1361,
                1346,
                1331,
                1315,
                1300,
                1285,
                1270,
                1255,
                1239,
                1224,
                1209,
                1194,
                1178,
                1163,
                1148,
                1133,
                1117,
                1102,
                1087,
                1072,
                1056,
                1041,
                1026,
                1011,
                995,
                980,
                965,
                950,
                934,
                919,
                904,
                889,
                873,
                858,
                843,
                827,
                812,
                797,
                782,
                766,
                751,
                736,
                720,
                705,
                690,
                674,
                659,
                644,
                629,
                613,
                598,
                583,
                567,
                552,
                537,
                521,
                506,
                491,
                475,
                460,
                445,
                429,
                414,
                399,
                383,
                368,
                353,
                337,
                322,
                307,
                291,
                276,
                261,
                245,
                230,
                215,
                199,
                184,
                169,
                153,
                138,
                123,
                107,
                92,
                77,
                61,
                46,
                31,
                15,
                0,
                -15,
                -31,
                -46,
                -61,
                -77,
                -92,
                -107,
                -123,
                -138,
                -153,
                -169,
                -184,
                -199,
                -215,
                -230,
                -245,
                -261,
                -276,
                -291,
                -307,
                -322,
                -337,
                -353,
                -368,
                -383,
                -399,
                -414,
                -429,
                -445,
                -460,
                -475,
                -491,
                -506,
                -521,
                -537,
                -552,
                -567,
                -583,
                -598,
                -613,
                -629,
                -644,
                -659,
                -674,
                -690,
                -705,
                -720,
                -736,
                -751,
                -766,
                -782,
                -797,
                -812,
                -827,
                -843,
                -858,
                -873,
                -889,
                -904,
                -919,
                -934,
                -950,
                -965,
                -980,
                -995,
                -1011,
                -1026,
                -1041,
                -1056,
                -1072,
                -1087,
                -1102,
                -1117,
                -1133,
                -1148,
                -1163,
                -1178,
                -1194,
                -1209,
                -1224,
                -1239,
                -1255,
                -1270,
                -1285,
                -1300,
                -1315,
                -1331,
                -1346,
                -1361,
                -1376,
                -1391,
                -1407,
                -1422,
                -1437,
                -1452,
                -1467,
                -1482,
                -1498,
                -1513,
                -1528,
                -1543,
                -1558,
                -1573,
                -1589,
                -1604,
                -1619,
                -1634,
                -1649,
                -1664,
                -1679,
                -1695,
                -1710,
                -1725,
                -1740,
                -1755,
                -1770,
                -1785,
                -1800,
                -1815,
                -1830,
                -1845,
                -1861,
                -1876,
                -1891,
                -1906,
                -1921,
                -1936,
                -1951,
                -1966,
                -1981,
                -1996,
                -2011,
                -2026,
                -2041,
                -2056,
                -2071,
                -2086,
                -2101,
                -2116,
                -2131,
                -2146,
                -2161,
                -2176,
                -2191,
                -2206,
                -2221,
                -2236,
                -2251,
                -2266,
                -2281,
                -2296,
                -2311,
                -2326,
                -2340,
                -2355,
                -2370,
                -2385,
                -2400,
                -2415,
                -2430,
                -2445,
                -2460,
                -2474,
                -2489,
                -2504,
                -2519,
                -2534,
                -2549,
                -2563,
                -2578,
                -2593,
                -2608,
                -2623,
                -2638,
                -2652,
                -2667,
                -2682,
                -2697,
                -2711,
                -2726,
                -2741,
                -2756,
                -2770,
                -2785,
                -2800,
                -2815,
                -2829,
                -2844,
                -2859,
                -2873,
                -2888,
                -2903,
                -2918,
                -2932,
                -2947,
                -2962,
                -2976,
                -2991,
                -3005,
                -3020,
                -3035,
                -3049,
                -3064,
                -3078,
                -3093,
                -3108,
                -3122,
                -3137,
                -3151,
                -3166,
                -3180,
                -3195,
                -3210,
                -3224,
                -3239,
                -3253,
                -3268,
                -3282,
                -3297,
                -3311,
                -3326,
                -3340,
                -3354,
                -3369,
                -3383,
                -3398,
                -3412,
                -3427,
                -3441,
                -3455,
                -3470,
                -3484,
                -3499,
                -3513,
                -3527,
                -3542,
                -3556,
                -3570,
                -3585,
                -3599,
                -3613,
                -3628,
                -3642,
                -3656,
                -3670,
                -3685,
                -3699,
                -3713,
                -3727,
                -3742,
                -3756,
                -3770,
                -3784,
                -3798,
                -3813,
                -3827,
                -3841,
                -3855,
                -3869,
                -3883,
                -3898,
                -3912,
                -3926,
                -3940,
                -3954,
                -3968,
                -3982,
                -3996,
                -4010,
                -4024,
                -4038,
                -4052,
                -4066,
                -4080,
                -4094,
                -4108,
                -4122,
                -4136,
                -4150,
                -4164,
                -4178,
                -4192,
                -4206,
                -4220,
                -4234,
                -4248,
                -4262,
                -4276,
                -4289,
                -4303,
                -4317,
                -4331,
                -4345,
                -4359,
                -4372,
                -4386,
                -4400,
                -4414,
                -4427,
                -4441,
                -4455,
                -4469,
                -4482,
                -4496,
                -4510,
                -4523,
                -4537,
                -4551,
                -4564,
                -4578,
                -4592,
                -4605,
                -4619,
                -4633,
                -4646,
                -4660,
                -4673,
                -4687,
                -4700,
                -4714,
                -4727,
                -4741,
                -4755,
                -4768,
                -4781,
                -4795,
                -4808,
                -4822,
                -4835,
                -4849,
                -4862,
                -4876,
                -4889,
                -4902,
                -4916,
                -4929,
                -4942,
                -4956,
                -4969,
                -4982,
                -4996,
                -5009,
                -5022,
                -5035,
                -5049,
                -5062,
                -5075,
                -5088,
                -5102,
                -5115,
                -5128,
                -5141,
                -5154,
                -5167,
                -5180,
                -5194,
                -5207,
                -5220,
                -5233,
                -5246,
                -5259,
                -5272,
                -5285,
                -5298,
                -5311,
                -5324,
                -5337,
                -5350,
                -5363,
                -5376,
                -5389,
                -5402,
                -5415,
                -5428,
                -5440,
                -5453,
                -5466,
                -5479,
                -5492,
                -5505,
                -5517,
                -5530,
                -5543,
                -5556,
                -5568,
                -5581,
                -5594,
                -5607,
                -5619,
                -5632,
                -5645,
                -5657,
                -5670,
                -5683,
                -5695,
                -5708,
                -5720,
                -5733,
                -5746,
                -5758,
                -5771,
                -5783,
                -5796,
                -5808,
                -5821,
                -5833,
                -5846,
                -5858,
                -5870,
                -5883,
                -5895,
                -5908,
                -5920,
                -5932,
                -5945,
                -5957,
                -5969,
                -5982,
                -5994,
                -6006,
                -6018,
                -6031,
                -6043,
                -6055,
                -6067,
                -6079,
                -6092,
                -6104,
                -6116,
                -6128,
                -6140,
                -6152,
                -6164,
                -6176,
                -6189,
                -6201,
                -6213,
                -6225,
                -6237,
                -6249,
                -6261,
                -6273,
                -6284,
                -6296,
                -6308,
                -6320,
                -6332,
                -6344,
                -6356,
                -6368,
                -6379,
                -6391,
                -6403,
                -6415,
                -6427,
                -6438,
                -6450,
                -6462,
                -6473,
                -6485,
                -6497,
                -6508,
                -6520,
                -6532,
                -6543,
                -6555,
                -6567,
                -6578,
                -6590,
                -6601,
                -6613,
                -6624,
                -6636,
                -6647,
                -6659,
                -6670,
                -6681,
                -6693,
                -6704,
                -6716,
                -6727,
                -6738,
                -6750,
                -6761,
                -6772,
                -6784,
                -6795,
                -6806,
                -6817,
                -6828,
                -6840,
                -6851,
                -6862,
                -6873,
                -6884,
                -6895,
                -6907,
                -6918,
                -6929,
                -6940,
                -6951,
                -6962,
                -6973,
                -6984,
                -6995,
                -7006,
                -7017,
                -7028,
                -7038,
                -7049,
                -7060,
                -7071,
                -7082,
                -7093,
                -7104,
                -7114,
                -7125,
                -7136,
                -7147,
                -7157,
                -7168,
                -7179,
                -7189,
                -7200,
                -7211,
                -7221,
                -7232,
                -7242,
                -7253,
                -7264,
                -7274,
                -7285,
                -7295,
                -7306,
                -7316,
                -7327,
                -7337,
                -7347,
                -7358,
                -7368,
                -7379,
                -7389,
                -7399,
                -7410,
                -7420,
                -7430,
                -7440,
                -7451,
                -7461,
                -7471,
                -7481,
                -7491,
                -7502,
                -7512,
                -7522,
                -7532,
                -7542,
                -7552,
                -7562,
                -7572,
                -7582,
                -7592,
                -7602,
                -7612,
                -7622,
                -7632,
                -7642,
                -7652,
                -7662,
                -7671,
                -7681,
                -7691,
                -7701,
                -7711,
                -7720,
                -7730,
                -7740,
                -7750,
                -7759,
                -7769,
                -7779,
                -7788,
                -7798,
                -7807,
                -7817,
                -7827,
                -7836,
                -7846,
                -7855,
                -7865,
                -7874,
                -7883,
                -7893,
                -7902,
                -7912,
                -7921,
                -7930,
                -7940,
                -7949,
                -7958,
                -7968,
                -7977,
                -7986,
                -7995,
                -8005,
                -8014,
                -8023,
                -8032,
                -8041,
                -8050,
                -8059,
                -8068,
                -8078,
                -8087,
                -8096,
                -8105,
                -8114,
                -8123,
                -8131,
                -8140,
                -8149,
                -8158,
                -8167,
                -8176,
                -8185,
                -8193,
                -8202,
                -8211,
                -8220,
                -8228,
                -8237,
                -8246,
                -8255,
                -8263,
                -8272,
                -8280,
                -8289,
                -8298,
                -8306,
                -8315,
                -8323,
                -8332,
                -8340,
                -8349,
                -8357,
                -8365,
                -8374,
                -8382,
                -8391,
                -8399,
                -8407,
                -8416,
                -8424,
                -8432,
                -8440,
                -8449,
                -8457,
                -8465,
                -8473,
                -8481,
                -8489,
                -8497,
                -8505,
                -8514,
                -8522,
                -8530,
                -8538,
                -8546,
                -8554,
                -8561,
                -8569,
                -8577,
                -8585,
                -8593,
                -8601,
                -8609,
                -8616,
                -8624,
                -8632,
                -8640,
                -8647,
                -8655,
                -8663,
                -8670,
                -8678,
                -8686,
                -8693,
                -8701,
                -8708,
                -8716,
                -8723,
                -8731,
                -8738,
                -8746,
                -8753,
                -8761,
                -8768,
                -8775,
                -8783,
                -8790,
                -8797,
                -8805,
                -8812,
                -8819,
                -8826,
                -8834,
                -8841,
                -8848,
                -8855,
                -8862,
                -8869,
                -8876,
                -8883,
                -8890,
                -8897,
                -8904,
                -8911,
                -8918,
                -8925,
                -8932,
                -8939,
                -8946,
                -8953,
                -8960,
                -8966,
                -8973,
                -8980,
                -8987,
                -8993,
                -9000,
                -9007,
                -9013,
                -9020,
                -9027,
                -9033,
                -9040,
                -9046,
                -9053,
                -9059,
                -9066,
                -9072,
                -9079,
                -9085,
                -9092,
                -9098,
                -9104,
                -9111,
                -9117,
                -9123,
                -9130,
                -9136,
                -9142,
                -9148,
                -9154,
                -9161,
                -9167,
                -9173,
                -9179,
                -9185,
                -9191,
                -9197,
                -9203,
                -9209,
                -9215,
                -9221,
                -9227,
                -9233,
                -9239,
                -9245,
                -9250,
                -9256,
                -9262,
                -9268,
                -9274,
                -9279,
                -9285,
                -9291,
                -9296,
                -9302,
                -9308,
                -9313,
                -9319,
                -9324,
                -9330,
                -9335,
                -9341,
                -9346,
                -9352,
                -9357,
                -9363,
                -9368,
                -9373,
                -9379,
                -9384,
                -9389,
                -9395,
                -9400,
                -9405,
                -9410,
                -9415,
                -9421,
                -9426,
                -9431,
                -9436,
                -9441,
                -9446,
                -9451,
                -9456,
                -9461,
                -9466,
                -9471,
                -9476,
                -9481,
                -9486,
                -9490,
                -9495,
                -9500,
                -9505,
                -9510,
                -9514,
                -9519,
                -9524,
                -9528,
                -9533,
                -9538,
                -9542,
                -9547,
                -9551,
                -9556,
                -9560,
                -9565,
                -9569,
                -9574,
                -9578,
                -9583,
                -9587,
                -9591,
                -9596,
                -9600,
                -9604,
                -9609,
                -9613,
                -9617,
                -9621,
                -9625,
                -9630,
                -9634,
                -9638,
                -9642,
                -9646,
                -9650,
                -9654,
                -9658,
                -9662,
                -9666,
                -9670,
                -9674,
                -9678,
                -9681,
                -9685,
                -9689,
                -9693,
                -9697,
                -9700,
                -9704,
                -9708,
                -9711,
                -9715,
                -9719,
                -9722,
                -9726,
                -9729,
                -9733,
                -9736,
                -9740,
                -9743,
                -9747,
                -9750,
                -9754,
                -9757,
                -9760,
                -9764,
                -9767,
                -9770,
                -9774,
                -9777,
                -9780,
                -9783,
                -9786,
                -9789,
                -9793,
                -9796,
                -9799,
                -9802,
                -9805,
                -9808,
                -9811,
                -9814,
                -9817,
                -9820,
                -9823,
                -9825,
                -9828,
                -9831,
                -9834,
                -9837,
                -9839,
                -9842,
                -9845,
                -9847,
                -9850,
                -9853,
                -9855,
                -9858,
                -9861,
                -9863,
                -9866,
                -9868,
                -9871,
                -9873,
                -9875,
                -9878,
                -9880,
                -9883,
                -9885,
                -9887,
                -9890,
                -9892,
                -9894,
                -9896,
                -9898,
                -9901,
                -9903,
                -9905,
                -9907,
                -9909,
                -9911,
                -9913,
                -9915,
                -9917,
                -9919,
                -9921,
                -9923,
                -9925,
                -9927,
                -9929,
                -9930,
                -9932,
                -9934,
                -9936,
                -9937,
                -9939,
                -9941,
                -9942,
                -9944,
                -9946,
                -9947,
                -9949,
                -9950,
                -9952,
                -9953,
                -9955,
                -9956,
                -9958,
                -9959,
                -9960,
                -9962,
                -9963,
                -9964,
                -9966,
                -9967,
                -9968,
                -9969,
                -9971,
                -9972,
                -9973,
                -9974,
                -9975,
                -9976,
                -9977,
                -9978,
                -9979,
                -9980,
                -9981,
                -9982,
                -9983,
                -9984,
                -9985,
                -9986,
                -9986,
                -9987,
                -9988,
                -9989,
                -9989,
                -9990,
                -9991,
                -9991,
                -9992,
                -9993,
                -9993,
                -9994,
                -9994,
                -9995,
                -9995,
                -9996,
                -9996,
                -9997,
                -9997,
                -9997,
                -9998,
                -9998,
                -9998,
                -9999,
                -9999,
                -9999,
                -9999,
                -9999,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -9999,
                -9999,
                -9999,
                -9999,
                -9999,
                -9998,
                -9998,
                -9998,
                -9997,
                -9997,
                -9997,
                -9996,
                -9996,
                -9995,
                -9995,
                -9994,
                -9994,
                -9993,
                -9993,
                -9992,
                -9991,
                -9991,
                -9990,
                -9989,
                -9989,
                -9988,
                -9987,
                -9986,
                -9986,
                -9985,
                -9984,
                -9983,
                -9982,
                -9981,
                -9980,
                -9979,
                -9978,
                -9977,
                -9976,
                -9975,
                -9974,
                -9973,
                -9972,
                -9971,
                -9969,
                -9968,
                -9967,
                -9966,
                -9964,
                -9963,
                -9962,
                -9960,
                -9959,
                -9958,
                -9956,
                -9955,
                -9953,
                -9952,
                -9950,
                -9949,
                -9947,
                -9946,
                -9944,
                -9942,
                -9941,
                -9939,
                -9937,
                -9936,
                -9934,
                -9932,
                -9930,
                -9929,
                -9927,
                -9925,
                -9923,
                -9921,
                -9919,
                -9917,
                -9915,
                -9913,
                -9911,
                -9909,
                -9907,
                -9905,
                -9903,
                -9901,
                -9898,
                -9896,
                -9894,
                -9892,
                -9890,
                -9887,
                -9885,
                -9883,
                -9880,
                -9878,
                -9875,
                -9873,
                -9871,
                -9868,
                -9866,
                -9863,
                -9861,
                -9858,
                -9855,
                -9853,
                -9850,
                -9847,
                -9845,
                -9842,
                -9839,
                -9837,
                -9834,
                -9831,
                -9828,
                -9825,
                -9823,
                -9820,
                -9817,
                -9814,
                -9811,
                -9808,
                -9805,
                -9802,
                -9799,
                -9796,
                -9793,
                -9789,
                -9786,
                -9783,
                -9780,
                -9777,
                -9774,
                -9770,
                -9767,
                -9764,
                -9760,
                -9757,
                -9754,
                -9750,
                -9747,
                -9743,
                -9740,
                -9736,
                -9733,
                -9729,
                -9726,
                -9722,
                -9719,
                -9715,
                -9711,
                -9708,
                -9704,
                -9700,
                -9697,
                -9693,
                -9689,
                -9685,
                -9681,
                -9678,
                -9674,
                -9670,
                -9666,
                -9662,
                -9658,
                -9654,
                -9650,
                -9646,
                -9642,
                -9638,
                -9634,
                -9630,
                -9625,
                -9621,
                -9617,
                -9613,
                -9609,
                -9604,
                -9600,
                -9596,
                -9591,
                -9587,
                -9583,
                -9578,
                -9574,
                -9569,
                -9565,
                -9560,
                -9556,
                -9551,
                -9547,
                -9542,
                -9538,
                -9533,
                -9528,
                -9524,
                -9519,
                -9514,
                -9510,
                -9505,
                -9500,
                -9495,
                -9490,
                -9486,
                -9481,
                -9476,
                -9471,
                -9466,
                -9461,
                -9456,
                -9451,
                -9446,
                -9441,
                -9436,
                -9431,
                -9426,
                -9421,
                -9415,
                -9410,
                -9405,
                -9400,
                -9395,
                -9389,
                -9384,
                -9379,
                -9373,
                -9368,
                -9363,
                -9357,
                -9352,
                -9346,
                -9341,
                -9335,
                -9330,
                -9324,
                -9319,
                -9313,
                -9308,
                -9302,
                -9296,
                -9291,
                -9285,
                -9279,
                -9274,
                -9268,
                -9262,
                -9256,
                -9250,
                -9245,
                -9239,
                -9233,
                -9227,
                -9221,
                -9215,
                -9209,
                -9203,
                -9197,
                -9191,
                -9185,
                -9179,
                -9173,
                -9167,
                -9161,
                -9154,
                -9148,
                -9142,
                -9136,
                -9130,
                -9123,
                -9117,
                -9111,
                -9104,
                -9098,
                -9092,
                -9085,
                -9079,
                -9072,
                -9066,
                -9059,
                -9053,
                -9046,
                -9040,
                -9033,
                -9027,
                -9020,
                -9013,
                -9007,
                -9000,
                -8993,
                -8987,
                -8980,
                -8973,
                -8966,
                -8960,
                -8953,
                -8946,
                -8939,
                -8932,
                -8925,
                -8918,
                -8911,
                -8904,
                -8897,
                -8890,
                -8883,
                -8876,
                -8869,
                -8862,
                -8855,
                -8848,
                -8841,
                -8834,
                -8826,
                -8819,
                -8812,
                -8805,
                -8797,
                -8790,
                -8783,
                -8775,
                -8768,
                -8761,
                -8753,
                -8746,
                -8738,
                -8731,
                -8723,
                -8716,
                -8708,
                -8701,
                -8693,
                -8686,
                -8678,
                -8670,
                -8663,
                -8655,
                -8647,
                -8640,
                -8632,
                -8624,
                -8616,
                -8609,
                -8601,
                -8593,
                -8585,
                -8577,
                -8569,
                -8561,
                -8554,
                -8546,
                -8538,
                -8530,
                -8522,
                -8514,
                -8505,
                -8497,
                -8489,
                -8481,
                -8473,
                -8465,
                -8457,
                -8449,
                -8440,
                -8432,
                -8424,
                -8416,
                -8407,
                -8399,
                -8391,
                -8382,
                -8374,
                -8365,
                -8357,
                -8349,
                -8340,
                -8332,
                -8323,
                -8315,
                -8306,
                -8298,
                -8289,
                -8280,
                -8272,
                -8263,
                -8255,
                -8246,
                -8237,
                -8228,
                -8220,
                -8211,
                -8202,
                -8193,
                -8185,
                -8176,
                -8167,
                -8158,
                -8149,
                -8140,
                -8131,
                -8123,
                -8114,
                -8105,
                -8096,
                -8087,
                -8078,
                -8068,
                -8059,
                -8050,
                -8041,
                -8032,
                -8023,
                -8014,
                -8005,
                -7995,
                -7986,
                -7977,
                -7968,
                -7958,
                -7949,
                -7940,
                -7930,
                -7921,
                -7912,
                -7902,
                -7893,
                -7883,
                -7874,
                -7865,
                -7855,
                -7846,
                -7836,
                -7827,
                -7817,
                -7807,
                -7798,
                -7788,
                -7779,
                -7769,
                -7759,
                -7750,
                -7740,
                -7730,
                -7720,
                -7711,
                -7701,
                -7691,
                -7681,
                -7671,
                -7662,
                -7652,
                -7642,
                -7632,
                -7622,
                -7612,
                -7602,
                -7592,
                -7582,
                -7572,
                -7562,
                -7552,
                -7542,
                -7532,
                -7522,
                -7512,
                -7502,
                -7491,
                -7481,
                -7471,
                -7461,
                -7451,
                -7440,
                -7430,
                -7420,
                -7410,
                -7399,
                -7389,
                -7379,
                -7368,
                -7358,
                -7347,
                -7337,
                -7327,
                -7316,
                -7306,
                -7295,
                -7285,
                -7274,
                -7264,
                -7253,
                -7242,
                -7232,
                -7221,
                -7211,
                -7200,
                -7189,
                -7179,
                -7168,
                -7157,
                -7147,
                -7136,
                -7125,
                -7114,
                -7104,
                -7093,
                -7082,
                -7071,
                -7060,
                -7049,
                -7038,
                -7028,
                -7017,
                -7006,
                -6995,
                -6984,
                -6973,
                -6962,
                -6951,
                -6940,
                -6929,
                -6918,
                -6907,
                -6895,
                -6884,
                -6873,
                -6862,
                -6851,
                -6840,
                -6828,
                -6817,
                -6806,
                -6795,
                -6784,
                -6772,
                -6761,
                -6750,
                -6738,
                -6727,
                -6716,
                -6704,
                -6693,
                -6681,
                -6670,
                -6659,
                -6647,
                -6636,
                -6624,
                -6613,
                -6601,
                -6590,
                -6578,
                -6567,
                -6555,
                -6543,
                -6532,
                -6520,
                -6508,
                -6497,
                -6485,
                -6473,
                -6462,
                -6450,
                -6438,
                -6427,
                -6415,
                -6403,
                -6391,
                -6379,
                -6368,
                -6356,
                -6344,
                -6332,
                -6320,
                -6308,
                -6296,
                -6284,
                -6273,
                -6261,
                -6249,
                -6237,
                -6225,
                -6213,
                -6201,
                -6189,
                -6176,
                -6164,
                -6152,
                -6140,
                -6128,
                -6116,
                -6104,
                -6092,
                -6079,
                -6067,
                -6055,
                -6043,
                -6031,
                -6018,
                -6006,
                -5994,
                -5982,
                -5969,
                -5957,
                -5945,
                -5932,
                -5920,
                -5908,
                -5895,
                -5883,
                -5870,
                -5858,
                -5846,
                -5833,
                -5821,
                -5808,
                -5796,
                -5783,
                -5771,
                -5758,
                -5746,
                -5733,
                -5720,
                -5708,
                -5695,
                -5683,
                -5670,
                -5657,
                -5645,
                -5632,
                -5619,
                -5607,
                -5594,
                -5581,
                -5568,
                -5556,
                -5543,
                -5530,
                -5517,
                -5505,
                -5492,
                -5479,
                -5466,
                -5453,
                -5440,
                -5428,
                -5415,
                -5402,
                -5389,
                -5376,
                -5363,
                -5350,
                -5337,
                -5324,
                -5311,
                -5298,
                -5285,
                -5272,
                -5259,
                -5246,
                -5233,
                -5220,
                -5207,
                -5194,
                -5180,
                -5167,
                -5154,
                -5141,
                -5128,
                -5115,
                -5102,
                -5088,
                -5075,
                -5062,
                -5049,
                -5035,
                -5022,
                -5009,
                -4996,
                -4982,
                -4969,
                -4956,
                -4942,
                -4929,
                -4916,
                -4902,
                -4889,
                -4876,
                -4862,
                -4849,
                -4835,
                -4822,
                -4808,
                -4795,
                -4781,
                -4768,
                -4755,
                -4741,
                -4727,
                -4714,
                -4700,
                -4687,
                -4673,
                -4660,
                -4646,
                -4633,
                -4619,
                -4605,
                -4592,
                -4578,
                -4564,
                -4551,
                -4537,
                -4523,
                -4510,
                -4496,
                -4482,
                -4469,
                -4455,
                -4441,
                -4427,
                -4414,
                -4400,
                -4386,
                -4372,
                -4359,
                -4345,
                -4331,
                -4317,
                -4303,
                -4289,
                -4276,
                -4262,
                -4248,
                -4234,
                -4220,
                -4206,
                -4192,
                -4178,
                -4164,
                -4150,
                -4136,
                -4122,
                -4108,
                -4094,
                -4080,
                -4066,
                -4052,
                -4038,
                -4024,
                -4010,
                -3996,
                -3982,
                -3968,
                -3954,
                -3940,
                -3926,
                -3912,
                -3898,
                -3883,
                -3869,
                -3855,
                -3841,
                -3827,
                -3813,
                -3798,
                -3784,
                -3770,
                -3756,
                -3742,
                -3727,
                -3713,
                -3699,
                -3685,
                -3670,
                -3656,
                -3642,
                -3628,
                -3613,
                -3599,
                -3585,
                -3570,
                -3556,
                -3542,
                -3527,
                -3513,
                -3499,
                -3484,
                -3470,
                -3455,
                -3441,
                -3427,
                -3412,
                -3398,
                -3383,
                -3369,
                -3354,
                -3340,
                -3326,
                -3311,
                -3297,
                -3282,
                -3268,
                -3253,
                -3239,
                -3224,
                -3210,
                -3195,
                -3180,
                -3166,
                -3151,
                -3137,
                -3122,
                -3108,
                -3093,
                -3078,
                -3064,
                -3049,
                -3035,
                -3020,
                -3005,
                -2991,
                -2976,
                -2962,
                -2947,
                -2932,
                -2918,
                -2903,
                -2888,
                -2873,
                -2859,
                -2844,
                -2829,
                -2815,
                -2800,
                -2785,
                -2770,
                -2756,
                -2741,
                -2726,
                -2711,
                -2697,
                -2682,
                -2667,
                -2652,
                -2638,
                -2623,
                -2608,
                -2593,
                -2578,
                -2563,
                -2549,
                -2534,
                -2519,
                -2504,
                -2489,
                -2474,
                -2460,
                -2445,
                -2430,
                -2415,
                -2400,
                -2385,
                -2370,
                -2355,
                -2340,
                -2326,
                -2311,
                -2296,
                -2281,
                -2266,
                -2251,
                -2236,
                -2221,
                -2206,
                -2191,
                -2176,
                -2161,
                -2146,
                -2131,
                -2116,
                -2101,
                -2086,
                -2071,
                -2056,
                -2041,
                -2026,
                -2011,
                -1996,
                -1981,
                -1966,
                -1951,
                -1936,
                -1921,
                -1906,
                -1891,
                -1876,
                -1861,
                -1845,
                -1830,
                -1815,
                -1800,
                -1785,
                -1770,
                -1755,
                -1740,
                -1725,
                -1710,
                -1695,
                -1679,
                -1664,
                -1649,
                -1634,
                -1619,
                -1604,
                -1589,
                -1573,
                -1558,
                -1543,
                -1528,
                -1513,
                -1498,
                -1482,
                -1467,
                -1452,
                -1437,
                -1422,
                -1407,
                -1391,
                -1376,
                -1361,
                -1346,
                -1331,
                -1315,
                -1300,
                -1285,
                -1270,
                -1255,
                -1239,
                -1224,
                -1209,
                -1194,
                -1178,
                -1163,
                -1148,
                -1133,
                -1117,
                -1102,
                -1087,
                -1072,
                -1056,
                -1041,
                -1026,
                -1011,
                -995,
                -980,
                -965,
                -950,
                -934,
                -919,
                -904,
                -889,
                -873,
                -858,
                -843,
                -827,
                -812,
                -797,
                -782,
                -766,
                -751,
                -736,
                -720,
                -705,
                -690,
                -674,
                -659,
                -644,
                -629,
                -613,
                -598,
                -583,
                -567,
                -552,
                -537,
                -521,
                -506,
                -491,
                -475,
                -460,
                -445,
                -429,
                -414,
                -399,
                -383,
                -368,
                -353,
                -337,
                -322,
                -307,
                -291,
                -276,
                -261,
                -245,
                -230,
                -215,
                -199,
                -184,
                -169,
                -153,
                -138,
                -123,
                -107,
                -92,
                -77,
                -61,
                -46,
                -31,
                -15
            };
            cos_table = new int[]
            {
                10000,
                10000,
                10000,
                10000,
                10000,
                10000,
                10000,
                9999,
                9999,
                9999,
                9999,
                9999,
                9998,
                9998,
                9998,
                9997,
                9997,
                9997,
                9996,
                9996,
                9995,
                9995,
                9994,
                9994,
                9993,
                9993,
                9992,
                9991,
                9991,
                9990,
                9989,
                9989,
                9988,
                9987,
                9986,
                9986,
                9985,
                9984,
                9983,
                9982,
                9981,
                9980,
                9979,
                9978,
                9977,
                9976,
                9975,
                9974,
                9973,
                9972,
                9971,
                9969,
                9968,
                9967,
                9966,
                9964,
                9963,
                9962,
                9960,
                9959,
                9958,
                9956,
                9955,
                9953,
                9952,
                9950,
                9949,
                9947,
                9946,
                9944,
                9942,
                9941,
                9939,
                9937,
                9936,
                9934,
                9932,
                9930,
                9929,
                9927,
                9925,
                9923,
                9921,
                9919,
                9917,
                9915,
                9913,
                9911,
                9909,
                9907,
                9905,
                9903,
                9901,
                9898,
                9896,
                9894,
                9892,
                9890,
                9887,
                9885,
                9883,
                9880,
                9878,
                9875,
                9873,
                9871,
                9868,
                9866,
                9863,
                9861,
                9858,
                9855,
                9853,
                9850,
                9847,
                9845,
                9842,
                9839,
                9837,
                9834,
                9831,
                9828,
                9825,
                9823,
                9820,
                9817,
                9814,
                9811,
                9808,
                9805,
                9802,
                9799,
                9796,
                9793,
                9789,
                9786,
                9783,
                9780,
                9777,
                9774,
                9770,
                9767,
                9764,
                9760,
                9757,
                9754,
                9750,
                9747,
                9743,
                9740,
                9736,
                9733,
                9729,
                9726,
                9722,
                9719,
                9715,
                9711,
                9708,
                9704,
                9700,
                9697,
                9693,
                9689,
                9685,
                9681,
                9678,
                9674,
                9670,
                9666,
                9662,
                9658,
                9654,
                9650,
                9646,
                9642,
                9638,
                9634,
                9630,
                9625,
                9621,
                9617,
                9613,
                9609,
                9604,
                9600,
                9596,
                9591,
                9587,
                9583,
                9578,
                9574,
                9569,
                9565,
                9560,
                9556,
                9551,
                9547,
                9542,
                9538,
                9533,
                9528,
                9524,
                9519,
                9514,
                9510,
                9505,
                9500,
                9495,
                9490,
                9486,
                9481,
                9476,
                9471,
                9466,
                9461,
                9456,
                9451,
                9446,
                9441,
                9436,
                9431,
                9426,
                9421,
                9415,
                9410,
                9405,
                9400,
                9395,
                9389,
                9384,
                9379,
                9373,
                9368,
                9363,
                9357,
                9352,
                9346,
                9341,
                9335,
                9330,
                9324,
                9319,
                9313,
                9308,
                9302,
                9296,
                9291,
                9285,
                9279,
                9274,
                9268,
                9262,
                9256,
                9250,
                9245,
                9239,
                9233,
                9227,
                9221,
                9215,
                9209,
                9203,
                9197,
                9191,
                9185,
                9179,
                9173,
                9167,
                9161,
                9154,
                9148,
                9142,
                9136,
                9130,
                9123,
                9117,
                9111,
                9104,
                9098,
                9092,
                9085,
                9079,
                9072,
                9066,
                9059,
                9053,
                9046,
                9040,
                9033,
                9027,
                9020,
                9013,
                9007,
                9000,
                8993,
                8987,
                8980,
                8973,
                8966,
                8960,
                8953,
                8946,
                8939,
                8932,
                8925,
                8918,
                8911,
                8904,
                8897,
                8890,
                8883,
                8876,
                8869,
                8862,
                8855,
                8848,
                8841,
                8834,
                8826,
                8819,
                8812,
                8805,
                8797,
                8790,
                8783,
                8775,
                8768,
                8761,
                8753,
                8746,
                8738,
                8731,
                8723,
                8716,
                8708,
                8701,
                8693,
                8686,
                8678,
                8670,
                8663,
                8655,
                8647,
                8640,
                8632,
                8624,
                8616,
                8609,
                8601,
                8593,
                8585,
                8577,
                8569,
                8561,
                8554,
                8546,
                8538,
                8530,
                8522,
                8514,
                8505,
                8497,
                8489,
                8481,
                8473,
                8465,
                8457,
                8449,
                8440,
                8432,
                8424,
                8416,
                8407,
                8399,
                8391,
                8382,
                8374,
                8365,
                8357,
                8349,
                8340,
                8332,
                8323,
                8315,
                8306,
                8298,
                8289,
                8280,
                8272,
                8263,
                8255,
                8246,
                8237,
                8228,
                8220,
                8211,
                8202,
                8193,
                8185,
                8176,
                8167,
                8158,
                8149,
                8140,
                8131,
                8123,
                8114,
                8105,
                8096,
                8087,
                8078,
                8068,
                8059,
                8050,
                8041,
                8032,
                8023,
                8014,
                8005,
                7995,
                7986,
                7977,
                7968,
                7958,
                7949,
                7940,
                7930,
                7921,
                7912,
                7902,
                7893,
                7883,
                7874,
                7865,
                7855,
                7846,
                7836,
                7827,
                7817,
                7807,
                7798,
                7788,
                7779,
                7769,
                7759,
                7750,
                7740,
                7730,
                7720,
                7711,
                7701,
                7691,
                7681,
                7671,
                7662,
                7652,
                7642,
                7632,
                7622,
                7612,
                7602,
                7592,
                7582,
                7572,
                7562,
                7552,
                7542,
                7532,
                7522,
                7512,
                7502,
                7491,
                7481,
                7471,
                7461,
                7451,
                7440,
                7430,
                7420,
                7410,
                7399,
                7389,
                7379,
                7368,
                7358,
                7347,
                7337,
                7327,
                7316,
                7306,
                7295,
                7285,
                7274,
                7264,
                7253,
                7242,
                7232,
                7221,
                7211,
                7200,
                7189,
                7179,
                7168,
                7157,
                7147,
                7136,
                7125,
                7114,
                7104,
                7093,
                7082,
                7071,
                7060,
                7049,
                7038,
                7028,
                7017,
                7006,
                6995,
                6984,
                6973,
                6962,
                6951,
                6940,
                6929,
                6918,
                6907,
                6895,
                6884,
                6873,
                6862,
                6851,
                6840,
                6828,
                6817,
                6806,
                6795,
                6784,
                6772,
                6761,
                6750,
                6738,
                6727,
                6716,
                6704,
                6693,
                6681,
                6670,
                6659,
                6647,
                6636,
                6624,
                6613,
                6601,
                6590,
                6578,
                6567,
                6555,
                6543,
                6532,
                6520,
                6508,
                6497,
                6485,
                6473,
                6462,
                6450,
                6438,
                6427,
                6415,
                6403,
                6391,
                6379,
                6368,
                6356,
                6344,
                6332,
                6320,
                6308,
                6296,
                6284,
                6273,
                6261,
                6249,
                6237,
                6225,
                6213,
                6201,
                6189,
                6176,
                6164,
                6152,
                6140,
                6128,
                6116,
                6104,
                6092,
                6079,
                6067,
                6055,
                6043,
                6031,
                6018,
                6006,
                5994,
                5982,
                5969,
                5957,
                5945,
                5932,
                5920,
                5908,
                5895,
                5883,
                5870,
                5858,
                5846,
                5833,
                5821,
                5808,
                5796,
                5783,
                5771,
                5758,
                5746,
                5733,
                5720,
                5708,
                5695,
                5683,
                5670,
                5657,
                5645,
                5632,
                5619,
                5607,
                5594,
                5581,
                5568,
                5556,
                5543,
                5530,
                5517,
                5505,
                5492,
                5479,
                5466,
                5453,
                5440,
                5428,
                5415,
                5402,
                5389,
                5376,
                5363,
                5350,
                5337,
                5324,
                5311,
                5298,
                5285,
                5272,
                5259,
                5246,
                5233,
                5220,
                5207,
                5194,
                5180,
                5167,
                5154,
                5141,
                5128,
                5115,
                5102,
                5088,
                5075,
                5062,
                5049,
                5035,
                5022,
                5009,
                4996,
                4982,
                4969,
                4956,
                4942,
                4929,
                4916,
                4902,
                4889,
                4876,
                4862,
                4849,
                4835,
                4822,
                4808,
                4795,
                4781,
                4768,
                4755,
                4741,
                4727,
                4714,
                4700,
                4687,
                4673,
                4660,
                4646,
                4633,
                4619,
                4605,
                4592,
                4578,
                4564,
                4551,
                4537,
                4523,
                4510,
                4496,
                4482,
                4469,
                4455,
                4441,
                4427,
                4414,
                4400,
                4386,
                4372,
                4359,
                4345,
                4331,
                4317,
                4303,
                4289,
                4276,
                4262,
                4248,
                4234,
                4220,
                4206,
                4192,
                4178,
                4164,
                4150,
                4136,
                4122,
                4108,
                4094,
                4080,
                4066,
                4052,
                4038,
                4024,
                4010,
                3996,
                3982,
                3968,
                3954,
                3940,
                3926,
                3912,
                3898,
                3883,
                3869,
                3855,
                3841,
                3827,
                3813,
                3798,
                3784,
                3770,
                3756,
                3742,
                3727,
                3713,
                3699,
                3685,
                3670,
                3656,
                3642,
                3628,
                3613,
                3599,
                3585,
                3570,
                3556,
                3542,
                3527,
                3513,
                3499,
                3484,
                3470,
                3455,
                3441,
                3427,
                3412,
                3398,
                3383,
                3369,
                3354,
                3340,
                3326,
                3311,
                3297,
                3282,
                3268,
                3253,
                3239,
                3224,
                3210,
                3195,
                3180,
                3166,
                3151,
                3137,
                3122,
                3108,
                3093,
                3078,
                3064,
                3049,
                3035,
                3020,
                3005,
                2991,
                2976,
                2962,
                2947,
                2932,
                2918,
                2903,
                2888,
                2873,
                2859,
                2844,
                2829,
                2815,
                2800,
                2785,
                2770,
                2756,
                2741,
                2726,
                2711,
                2697,
                2682,
                2667,
                2652,
                2638,
                2623,
                2608,
                2593,
                2578,
                2563,
                2549,
                2534,
                2519,
                2504,
                2489,
                2474,
                2460,
                2445,
                2430,
                2415,
                2400,
                2385,
                2370,
                2355,
                2340,
                2326,
                2311,
                2296,
                2281,
                2266,
                2251,
                2236,
                2221,
                2206,
                2191,
                2176,
                2161,
                2146,
                2131,
                2116,
                2101,
                2086,
                2071,
                2056,
                2041,
                2026,
                2011,
                1996,
                1981,
                1966,
                1951,
                1936,
                1921,
                1906,
                1891,
                1876,
                1861,
                1845,
                1830,
                1815,
                1800,
                1785,
                1770,
                1755,
                1740,
                1725,
                1710,
                1695,
                1679,
                1664,
                1649,
                1634,
                1619,
                1604,
                1589,
                1573,
                1558,
                1543,
                1528,
                1513,
                1498,
                1482,
                1467,
                1452,
                1437,
                1422,
                1407,
                1391,
                1376,
                1361,
                1346,
                1331,
                1315,
                1300,
                1285,
                1270,
                1255,
                1239,
                1224,
                1209,
                1194,
                1178,
                1163,
                1148,
                1133,
                1117,
                1102,
                1087,
                1072,
                1056,
                1041,
                1026,
                1011,
                995,
                980,
                965,
                950,
                934,
                919,
                904,
                889,
                873,
                858,
                843,
                827,
                812,
                797,
                782,
                766,
                751,
                736,
                720,
                705,
                690,
                674,
                659,
                644,
                629,
                613,
                598,
                583,
                567,
                552,
                537,
                521,
                506,
                491,
                475,
                460,
                445,
                429,
                414,
                399,
                383,
                368,
                353,
                337,
                322,
                307,
                291,
                276,
                261,
                245,
                230,
                215,
                199,
                184,
                169,
                153,
                138,
                123,
                107,
                92,
                77,
                61,
                46,
                31,
                15,
                0,
                -15,
                -31,
                -46,
                -61,
                -77,
                -92,
                -107,
                -123,
                -138,
                -153,
                -169,
                -184,
                -199,
                -215,
                -230,
                -245,
                -261,
                -276,
                -291,
                -307,
                -322,
                -337,
                -353,
                -368,
                -383,
                -399,
                -414,
                -429,
                -445,
                -460,
                -475,
                -491,
                -506,
                -521,
                -537,
                -552,
                -567,
                -583,
                -598,
                -613,
                -629,
                -644,
                -659,
                -674,
                -690,
                -705,
                -720,
                -736,
                -751,
                -766,
                -782,
                -797,
                -812,
                -827,
                -843,
                -858,
                -873,
                -889,
                -904,
                -919,
                -934,
                -950,
                -965,
                -980,
                -995,
                -1011,
                -1026,
                -1041,
                -1056,
                -1072,
                -1087,
                -1102,
                -1117,
                -1133,
                -1148,
                -1163,
                -1178,
                -1194,
                -1209,
                -1224,
                -1239,
                -1255,
                -1270,
                -1285,
                -1300,
                -1315,
                -1331,
                -1346,
                -1361,
                -1376,
                -1391,
                -1407,
                -1422,
                -1437,
                -1452,
                -1467,
                -1482,
                -1498,
                -1513,
                -1528,
                -1543,
                -1558,
                -1573,
                -1589,
                -1604,
                -1619,
                -1634,
                -1649,
                -1664,
                -1679,
                -1695,
                -1710,
                -1725,
                -1740,
                -1755,
                -1770,
                -1785,
                -1800,
                -1815,
                -1830,
                -1845,
                -1861,
                -1876,
                -1891,
                -1906,
                -1921,
                -1936,
                -1951,
                -1966,
                -1981,
                -1996,
                -2011,
                -2026,
                -2041,
                -2056,
                -2071,
                -2086,
                -2101,
                -2116,
                -2131,
                -2146,
                -2161,
                -2176,
                -2191,
                -2206,
                -2221,
                -2236,
                -2251,
                -2266,
                -2281,
                -2296,
                -2311,
                -2326,
                -2340,
                -2355,
                -2370,
                -2385,
                -2400,
                -2415,
                -2430,
                -2445,
                -2460,
                -2474,
                -2489,
                -2504,
                -2519,
                -2534,
                -2549,
                -2563,
                -2578,
                -2593,
                -2608,
                -2623,
                -2638,
                -2652,
                -2667,
                -2682,
                -2697,
                -2711,
                -2726,
                -2741,
                -2756,
                -2770,
                -2785,
                -2800,
                -2815,
                -2829,
                -2844,
                -2859,
                -2873,
                -2888,
                -2903,
                -2918,
                -2932,
                -2947,
                -2962,
                -2976,
                -2991,
                -3005,
                -3020,
                -3035,
                -3049,
                -3064,
                -3078,
                -3093,
                -3108,
                -3122,
                -3137,
                -3151,
                -3166,
                -3180,
                -3195,
                -3210,
                -3224,
                -3239,
                -3253,
                -3268,
                -3282,
                -3297,
                -3311,
                -3326,
                -3340,
                -3354,
                -3369,
                -3383,
                -3398,
                -3412,
                -3427,
                -3441,
                -3455,
                -3470,
                -3484,
                -3499,
                -3513,
                -3527,
                -3542,
                -3556,
                -3570,
                -3585,
                -3599,
                -3613,
                -3628,
                -3642,
                -3656,
                -3670,
                -3685,
                -3699,
                -3713,
                -3727,
                -3742,
                -3756,
                -3770,
                -3784,
                -3798,
                -3813,
                -3827,
                -3841,
                -3855,
                -3869,
                -3883,
                -3898,
                -3912,
                -3926,
                -3940,
                -3954,
                -3968,
                -3982,
                -3996,
                -4010,
                -4024,
                -4038,
                -4052,
                -4066,
                -4080,
                -4094,
                -4108,
                -4122,
                -4136,
                -4150,
                -4164,
                -4178,
                -4192,
                -4206,
                -4220,
                -4234,
                -4248,
                -4262,
                -4276,
                -4289,
                -4303,
                -4317,
                -4331,
                -4345,
                -4359,
                -4372,
                -4386,
                -4400,
                -4414,
                -4427,
                -4441,
                -4455,
                -4469,
                -4482,
                -4496,
                -4510,
                -4523,
                -4537,
                -4551,
                -4564,
                -4578,
                -4592,
                -4605,
                -4619,
                -4633,
                -4646,
                -4660,
                -4673,
                -4687,
                -4700,
                -4714,
                -4727,
                -4741,
                -4755,
                -4768,
                -4781,
                -4795,
                -4808,
                -4822,
                -4835,
                -4849,
                -4862,
                -4876,
                -4889,
                -4902,
                -4916,
                -4929,
                -4942,
                -4956,
                -4969,
                -4982,
                -4996,
                -5009,
                -5022,
                -5035,
                -5049,
                -5062,
                -5075,
                -5088,
                -5102,
                -5115,
                -5128,
                -5141,
                -5154,
                -5167,
                -5180,
                -5194,
                -5207,
                -5220,
                -5233,
                -5246,
                -5259,
                -5272,
                -5285,
                -5298,
                -5311,
                -5324,
                -5337,
                -5350,
                -5363,
                -5376,
                -5389,
                -5402,
                -5415,
                -5428,
                -5440,
                -5453,
                -5466,
                -5479,
                -5492,
                -5505,
                -5517,
                -5530,
                -5543,
                -5556,
                -5568,
                -5581,
                -5594,
                -5607,
                -5619,
                -5632,
                -5645,
                -5657,
                -5670,
                -5683,
                -5695,
                -5708,
                -5720,
                -5733,
                -5746,
                -5758,
                -5771,
                -5783,
                -5796,
                -5808,
                -5821,
                -5833,
                -5846,
                -5858,
                -5870,
                -5883,
                -5895,
                -5908,
                -5920,
                -5932,
                -5945,
                -5957,
                -5969,
                -5982,
                -5994,
                -6006,
                -6018,
                -6031,
                -6043,
                -6055,
                -6067,
                -6079,
                -6092,
                -6104,
                -6116,
                -6128,
                -6140,
                -6152,
                -6164,
                -6176,
                -6189,
                -6201,
                -6213,
                -6225,
                -6237,
                -6249,
                -6261,
                -6273,
                -6284,
                -6296,
                -6308,
                -6320,
                -6332,
                -6344,
                -6356,
                -6368,
                -6379,
                -6391,
                -6403,
                -6415,
                -6427,
                -6438,
                -6450,
                -6462,
                -6473,
                -6485,
                -6497,
                -6508,
                -6520,
                -6532,
                -6543,
                -6555,
                -6567,
                -6578,
                -6590,
                -6601,
                -6613,
                -6624,
                -6636,
                -6647,
                -6659,
                -6670,
                -6681,
                -6693,
                -6704,
                -6716,
                -6727,
                -6738,
                -6750,
                -6761,
                -6772,
                -6784,
                -6795,
                -6806,
                -6817,
                -6828,
                -6840,
                -6851,
                -6862,
                -6873,
                -6884,
                -6895,
                -6907,
                -6918,
                -6929,
                -6940,
                -6951,
                -6962,
                -6973,
                -6984,
                -6995,
                -7006,
                -7017,
                -7028,
                -7038,
                -7049,
                -7060,
                -7071,
                -7082,
                -7093,
                -7104,
                -7114,
                -7125,
                -7136,
                -7147,
                -7157,
                -7168,
                -7179,
                -7189,
                -7200,
                -7211,
                -7221,
                -7232,
                -7242,
                -7253,
                -7264,
                -7274,
                -7285,
                -7295,
                -7306,
                -7316,
                -7327,
                -7337,
                -7347,
                -7358,
                -7368,
                -7379,
                -7389,
                -7399,
                -7410,
                -7420,
                -7430,
                -7440,
                -7451,
                -7461,
                -7471,
                -7481,
                -7491,
                -7502,
                -7512,
                -7522,
                -7532,
                -7542,
                -7552,
                -7562,
                -7572,
                -7582,
                -7592,
                -7602,
                -7612,
                -7622,
                -7632,
                -7642,
                -7652,
                -7662,
                -7671,
                -7681,
                -7691,
                -7701,
                -7711,
                -7720,
                -7730,
                -7740,
                -7750,
                -7759,
                -7769,
                -7779,
                -7788,
                -7798,
                -7807,
                -7817,
                -7827,
                -7836,
                -7846,
                -7855,
                -7865,
                -7874,
                -7883,
                -7893,
                -7902,
                -7912,
                -7921,
                -7930,
                -7940,
                -7949,
                -7958,
                -7968,
                -7977,
                -7986,
                -7995,
                -8005,
                -8014,
                -8023,
                -8032,
                -8041,
                -8050,
                -8059,
                -8068,
                -8078,
                -8087,
                -8096,
                -8105,
                -8114,
                -8123,
                -8131,
                -8140,
                -8149,
                -8158,
                -8167,
                -8176,
                -8185,
                -8193,
                -8202,
                -8211,
                -8220,
                -8228,
                -8237,
                -8246,
                -8255,
                -8263,
                -8272,
                -8280,
                -8289,
                -8298,
                -8306,
                -8315,
                -8323,
                -8332,
                -8340,
                -8349,
                -8357,
                -8365,
                -8374,
                -8382,
                -8391,
                -8399,
                -8407,
                -8416,
                -8424,
                -8432,
                -8440,
                -8449,
                -8457,
                -8465,
                -8473,
                -8481,
                -8489,
                -8497,
                -8505,
                -8514,
                -8522,
                -8530,
                -8538,
                -8546,
                -8554,
                -8561,
                -8569,
                -8577,
                -8585,
                -8593,
                -8601,
                -8609,
                -8616,
                -8624,
                -8632,
                -8640,
                -8647,
                -8655,
                -8663,
                -8670,
                -8678,
                -8686,
                -8693,
                -8701,
                -8708,
                -8716,
                -8723,
                -8731,
                -8738,
                -8746,
                -8753,
                -8761,
                -8768,
                -8775,
                -8783,
                -8790,
                -8797,
                -8805,
                -8812,
                -8819,
                -8826,
                -8834,
                -8841,
                -8848,
                -8855,
                -8862,
                -8869,
                -8876,
                -8883,
                -8890,
                -8897,
                -8904,
                -8911,
                -8918,
                -8925,
                -8932,
                -8939,
                -8946,
                -8953,
                -8960,
                -8966,
                -8973,
                -8980,
                -8987,
                -8993,
                -9000,
                -9007,
                -9013,
                -9020,
                -9027,
                -9033,
                -9040,
                -9046,
                -9053,
                -9059,
                -9066,
                -9072,
                -9079,
                -9085,
                -9092,
                -9098,
                -9104,
                -9111,
                -9117,
                -9123,
                -9130,
                -9136,
                -9142,
                -9148,
                -9154,
                -9161,
                -9167,
                -9173,
                -9179,
                -9185,
                -9191,
                -9197,
                -9203,
                -9209,
                -9215,
                -9221,
                -9227,
                -9233,
                -9239,
                -9245,
                -9250,
                -9256,
                -9262,
                -9268,
                -9274,
                -9279,
                -9285,
                -9291,
                -9296,
                -9302,
                -9308,
                -9313,
                -9319,
                -9324,
                -9330,
                -9335,
                -9341,
                -9346,
                -9352,
                -9357,
                -9363,
                -9368,
                -9373,
                -9379,
                -9384,
                -9389,
                -9395,
                -9400,
                -9405,
                -9410,
                -9415,
                -9421,
                -9426,
                -9431,
                -9436,
                -9441,
                -9446,
                -9451,
                -9456,
                -9461,
                -9466,
                -9471,
                -9476,
                -9481,
                -9486,
                -9490,
                -9495,
                -9500,
                -9505,
                -9510,
                -9514,
                -9519,
                -9524,
                -9528,
                -9533,
                -9538,
                -9542,
                -9547,
                -9551,
                -9556,
                -9560,
                -9565,
                -9569,
                -9574,
                -9578,
                -9583,
                -9587,
                -9591,
                -9596,
                -9600,
                -9604,
                -9609,
                -9613,
                -9617,
                -9621,
                -9625,
                -9630,
                -9634,
                -9638,
                -9642,
                -9646,
                -9650,
                -9654,
                -9658,
                -9662,
                -9666,
                -9670,
                -9674,
                -9678,
                -9681,
                -9685,
                -9689,
                -9693,
                -9697,
                -9700,
                -9704,
                -9708,
                -9711,
                -9715,
                -9719,
                -9722,
                -9726,
                -9729,
                -9733,
                -9736,
                -9740,
                -9743,
                -9747,
                -9750,
                -9754,
                -9757,
                -9760,
                -9764,
                -9767,
                -9770,
                -9774,
                -9777,
                -9780,
                -9783,
                -9786,
                -9789,
                -9793,
                -9796,
                -9799,
                -9802,
                -9805,
                -9808,
                -9811,
                -9814,
                -9817,
                -9820,
                -9823,
                -9825,
                -9828,
                -9831,
                -9834,
                -9837,
                -9839,
                -9842,
                -9845,
                -9847,
                -9850,
                -9853,
                -9855,
                -9858,
                -9861,
                -9863,
                -9866,
                -9868,
                -9871,
                -9873,
                -9875,
                -9878,
                -9880,
                -9883,
                -9885,
                -9887,
                -9890,
                -9892,
                -9894,
                -9896,
                -9898,
                -9901,
                -9903,
                -9905,
                -9907,
                -9909,
                -9911,
                -9913,
                -9915,
                -9917,
                -9919,
                -9921,
                -9923,
                -9925,
                -9927,
                -9929,
                -9930,
                -9932,
                -9934,
                -9936,
                -9937,
                -9939,
                -9941,
                -9942,
                -9944,
                -9946,
                -9947,
                -9949,
                -9950,
                -9952,
                -9953,
                -9955,
                -9956,
                -9958,
                -9959,
                -9960,
                -9962,
                -9963,
                -9964,
                -9966,
                -9967,
                -9968,
                -9969,
                -9971,
                -9972,
                -9973,
                -9974,
                -9975,
                -9976,
                -9977,
                -9978,
                -9979,
                -9980,
                -9981,
                -9982,
                -9983,
                -9984,
                -9985,
                -9986,
                -9986,
                -9987,
                -9988,
                -9989,
                -9989,
                -9990,
                -9991,
                -9991,
                -9992,
                -9993,
                -9993,
                -9994,
                -9994,
                -9995,
                -9995,
                -9996,
                -9996,
                -9997,
                -9997,
                -9997,
                -9998,
                -9998,
                -9998,
                -9999,
                -9999,
                -9999,
                -9999,
                -9999,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -10000,
                -9999,
                -9999,
                -9999,
                -9999,
                -9999,
                -9998,
                -9998,
                -9998,
                -9997,
                -9997,
                -9997,
                -9996,
                -9996,
                -9995,
                -9995,
                -9994,
                -9994,
                -9993,
                -9993,
                -9992,
                -9991,
                -9991,
                -9990,
                -9989,
                -9989,
                -9988,
                -9987,
                -9986,
                -9986,
                -9985,
                -9984,
                -9983,
                -9982,
                -9981,
                -9980,
                -9979,
                -9978,
                -9977,
                -9976,
                -9975,
                -9974,
                -9973,
                -9972,
                -9971,
                -9969,
                -9968,
                -9967,
                -9966,
                -9964,
                -9963,
                -9962,
                -9960,
                -9959,
                -9958,
                -9956,
                -9955,
                -9953,
                -9952,
                -9950,
                -9949,
                -9947,
                -9946,
                -9944,
                -9942,
                -9941,
                -9939,
                -9937,
                -9936,
                -9934,
                -9932,
                -9930,
                -9929,
                -9927,
                -9925,
                -9923,
                -9921,
                -9919,
                -9917,
                -9915,
                -9913,
                -9911,
                -9909,
                -9907,
                -9905,
                -9903,
                -9901,
                -9898,
                -9896,
                -9894,
                -9892,
                -9890,
                -9887,
                -9885,
                -9883,
                -9880,
                -9878,
                -9875,
                -9873,
                -9871,
                -9868,
                -9866,
                -9863,
                -9861,
                -9858,
                -9855,
                -9853,
                -9850,
                -9847,
                -9845,
                -9842,
                -9839,
                -9837,
                -9834,
                -9831,
                -9828,
                -9825,
                -9823,
                -9820,
                -9817,
                -9814,
                -9811,
                -9808,
                -9805,
                -9802,
                -9799,
                -9796,
                -9793,
                -9789,
                -9786,
                -9783,
                -9780,
                -9777,
                -9774,
                -9770,
                -9767,
                -9764,
                -9760,
                -9757,
                -9754,
                -9750,
                -9747,
                -9743,
                -9740,
                -9736,
                -9733,
                -9729,
                -9726,
                -9722,
                -9719,
                -9715,
                -9711,
                -9708,
                -9704,
                -9700,
                -9697,
                -9693,
                -9689,
                -9685,
                -9681,
                -9678,
                -9674,
                -9670,
                -9666,
                -9662,
                -9658,
                -9654,
                -9650,
                -9646,
                -9642,
                -9638,
                -9634,
                -9630,
                -9625,
                -9621,
                -9617,
                -9613,
                -9609,
                -9604,
                -9600,
                -9596,
                -9591,
                -9587,
                -9583,
                -9578,
                -9574,
                -9569,
                -9565,
                -9560,
                -9556,
                -9551,
                -9547,
                -9542,
                -9538,
                -9533,
                -9528,
                -9524,
                -9519,
                -9514,
                -9510,
                -9505,
                -9500,
                -9495,
                -9490,
                -9486,
                -9481,
                -9476,
                -9471,
                -9466,
                -9461,
                -9456,
                -9451,
                -9446,
                -9441,
                -9436,
                -9431,
                -9426,
                -9421,
                -9415,
                -9410,
                -9405,
                -9400,
                -9395,
                -9389,
                -9384,
                -9379,
                -9373,
                -9368,
                -9363,
                -9357,
                -9352,
                -9346,
                -9341,
                -9335,
                -9330,
                -9324,
                -9319,
                -9313,
                -9308,
                -9302,
                -9296,
                -9291,
                -9285,
                -9279,
                -9274,
                -9268,
                -9262,
                -9256,
                -9250,
                -9245,
                -9239,
                -9233,
                -9227,
                -9221,
                -9215,
                -9209,
                -9203,
                -9197,
                -9191,
                -9185,
                -9179,
                -9173,
                -9167,
                -9161,
                -9154,
                -9148,
                -9142,
                -9136,
                -9130,
                -9123,
                -9117,
                -9111,
                -9104,
                -9098,
                -9092,
                -9085,
                -9079,
                -9072,
                -9066,
                -9059,
                -9053,
                -9046,
                -9040,
                -9033,
                -9027,
                -9020,
                -9013,
                -9007,
                -9000,
                -8993,
                -8987,
                -8980,
                -8973,
                -8966,
                -8960,
                -8953,
                -8946,
                -8939,
                -8932,
                -8925,
                -8918,
                -8911,
                -8904,
                -8897,
                -8890,
                -8883,
                -8876,
                -8869,
                -8862,
                -8855,
                -8848,
                -8841,
                -8834,
                -8826,
                -8819,
                -8812,
                -8805,
                -8797,
                -8790,
                -8783,
                -8775,
                -8768,
                -8761,
                -8753,
                -8746,
                -8738,
                -8731,
                -8723,
                -8716,
                -8708,
                -8701,
                -8693,
                -8686,
                -8678,
                -8670,
                -8663,
                -8655,
                -8647,
                -8640,
                -8632,
                -8624,
                -8616,
                -8609,
                -8601,
                -8593,
                -8585,
                -8577,
                -8569,
                -8561,
                -8554,
                -8546,
                -8538,
                -8530,
                -8522,
                -8514,
                -8505,
                -8497,
                -8489,
                -8481,
                -8473,
                -8465,
                -8457,
                -8449,
                -8440,
                -8432,
                -8424,
                -8416,
                -8407,
                -8399,
                -8391,
                -8382,
                -8374,
                -8365,
                -8357,
                -8349,
                -8340,
                -8332,
                -8323,
                -8315,
                -8306,
                -8298,
                -8289,
                -8280,
                -8272,
                -8263,
                -8255,
                -8246,
                -8237,
                -8228,
                -8220,
                -8211,
                -8202,
                -8193,
                -8185,
                -8176,
                -8167,
                -8158,
                -8149,
                -8140,
                -8131,
                -8123,
                -8114,
                -8105,
                -8096,
                -8087,
                -8078,
                -8068,
                -8059,
                -8050,
                -8041,
                -8032,
                -8023,
                -8014,
                -8005,
                -7995,
                -7986,
                -7977,
                -7968,
                -7958,
                -7949,
                -7940,
                -7930,
                -7921,
                -7912,
                -7902,
                -7893,
                -7883,
                -7874,
                -7865,
                -7855,
                -7846,
                -7836,
                -7827,
                -7817,
                -7807,
                -7798,
                -7788,
                -7779,
                -7769,
                -7759,
                -7750,
                -7740,
                -7730,
                -7720,
                -7711,
                -7701,
                -7691,
                -7681,
                -7671,
                -7662,
                -7652,
                -7642,
                -7632,
                -7622,
                -7612,
                -7602,
                -7592,
                -7582,
                -7572,
                -7562,
                -7552,
                -7542,
                -7532,
                -7522,
                -7512,
                -7502,
                -7491,
                -7481,
                -7471,
                -7461,
                -7451,
                -7440,
                -7430,
                -7420,
                -7410,
                -7399,
                -7389,
                -7379,
                -7368,
                -7358,
                -7347,
                -7337,
                -7327,
                -7316,
                -7306,
                -7295,
                -7285,
                -7274,
                -7264,
                -7253,
                -7242,
                -7232,
                -7221,
                -7211,
                -7200,
                -7189,
                -7179,
                -7168,
                -7157,
                -7147,
                -7136,
                -7125,
                -7114,
                -7104,
                -7093,
                -7082,
                -7071,
                -7060,
                -7049,
                -7038,
                -7028,
                -7017,
                -7006,
                -6995,
                -6984,
                -6973,
                -6962,
                -6951,
                -6940,
                -6929,
                -6918,
                -6907,
                -6895,
                -6884,
                -6873,
                -6862,
                -6851,
                -6840,
                -6828,
                -6817,
                -6806,
                -6795,
                -6784,
                -6772,
                -6761,
                -6750,
                -6738,
                -6727,
                -6716,
                -6704,
                -6693,
                -6681,
                -6670,
                -6659,
                -6647,
                -6636,
                -6624,
                -6613,
                -6601,
                -6590,
                -6578,
                -6567,
                -6555,
                -6543,
                -6532,
                -6520,
                -6508,
                -6497,
                -6485,
                -6473,
                -6462,
                -6450,
                -6438,
                -6427,
                -6415,
                -6403,
                -6391,
                -6379,
                -6368,
                -6356,
                -6344,
                -6332,
                -6320,
                -6308,
                -6296,
                -6284,
                -6273,
                -6261,
                -6249,
                -6237,
                -6225,
                -6213,
                -6201,
                -6189,
                -6176,
                -6164,
                -6152,
                -6140,
                -6128,
                -6116,
                -6104,
                -6092,
                -6079,
                -6067,
                -6055,
                -6043,
                -6031,
                -6018,
                -6006,
                -5994,
                -5982,
                -5969,
                -5957,
                -5945,
                -5932,
                -5920,
                -5908,
                -5895,
                -5883,
                -5870,
                -5858,
                -5846,
                -5833,
                -5821,
                -5808,
                -5796,
                -5783,
                -5771,
                -5758,
                -5746,
                -5733,
                -5720,
                -5708,
                -5695,
                -5683,
                -5670,
                -5657,
                -5645,
                -5632,
                -5619,
                -5607,
                -5594,
                -5581,
                -5568,
                -5556,
                -5543,
                -5530,
                -5517,
                -5505,
                -5492,
                -5479,
                -5466,
                -5453,
                -5440,
                -5428,
                -5415,
                -5402,
                -5389,
                -5376,
                -5363,
                -5350,
                -5337,
                -5324,
                -5311,
                -5298,
                -5285,
                -5272,
                -5259,
                -5246,
                -5233,
                -5220,
                -5207,
                -5194,
                -5180,
                -5167,
                -5154,
                -5141,
                -5128,
                -5115,
                -5102,
                -5088,
                -5075,
                -5062,
                -5049,
                -5035,
                -5022,
                -5009,
                -4996,
                -4982,
                -4969,
                -4956,
                -4942,
                -4929,
                -4916,
                -4902,
                -4889,
                -4876,
                -4862,
                -4849,
                -4835,
                -4822,
                -4808,
                -4795,
                -4781,
                -4768,
                -4755,
                -4741,
                -4727,
                -4714,
                -4700,
                -4687,
                -4673,
                -4660,
                -4646,
                -4633,
                -4619,
                -4605,
                -4592,
                -4578,
                -4564,
                -4551,
                -4537,
                -4523,
                -4510,
                -4496,
                -4482,
                -4469,
                -4455,
                -4441,
                -4427,
                -4414,
                -4400,
                -4386,
                -4372,
                -4359,
                -4345,
                -4331,
                -4317,
                -4303,
                -4289,
                -4276,
                -4262,
                -4248,
                -4234,
                -4220,
                -4206,
                -4192,
                -4178,
                -4164,
                -4150,
                -4136,
                -4122,
                -4108,
                -4094,
                -4080,
                -4066,
                -4052,
                -4038,
                -4024,
                -4010,
                -3996,
                -3982,
                -3968,
                -3954,
                -3940,
                -3926,
                -3912,
                -3898,
                -3883,
                -3869,
                -3855,
                -3841,
                -3827,
                -3813,
                -3798,
                -3784,
                -3770,
                -3756,
                -3742,
                -3727,
                -3713,
                -3699,
                -3685,
                -3670,
                -3656,
                -3642,
                -3628,
                -3613,
                -3599,
                -3585,
                -3570,
                -3556,
                -3542,
                -3527,
                -3513,
                -3499,
                -3484,
                -3470,
                -3455,
                -3441,
                -3427,
                -3412,
                -3398,
                -3383,
                -3369,
                -3354,
                -3340,
                -3326,
                -3311,
                -3297,
                -3282,
                -3268,
                -3253,
                -3239,
                -3224,
                -3210,
                -3195,
                -3180,
                -3166,
                -3151,
                -3137,
                -3122,
                -3108,
                -3093,
                -3078,
                -3064,
                -3049,
                -3035,
                -3020,
                -3005,
                -2991,
                -2976,
                -2962,
                -2947,
                -2932,
                -2918,
                -2903,
                -2888,
                -2873,
                -2859,
                -2844,
                -2829,
                -2815,
                -2800,
                -2785,
                -2770,
                -2756,
                -2741,
                -2726,
                -2711,
                -2697,
                -2682,
                -2667,
                -2652,
                -2638,
                -2623,
                -2608,
                -2593,
                -2578,
                -2563,
                -2549,
                -2534,
                -2519,
                -2504,
                -2489,
                -2474,
                -2460,
                -2445,
                -2430,
                -2415,
                -2400,
                -2385,
                -2370,
                -2355,
                -2340,
                -2326,
                -2311,
                -2296,
                -2281,
                -2266,
                -2251,
                -2236,
                -2221,
                -2206,
                -2191,
                -2176,
                -2161,
                -2146,
                -2131,
                -2116,
                -2101,
                -2086,
                -2071,
                -2056,
                -2041,
                -2026,
                -2011,
                -1996,
                -1981,
                -1966,
                -1951,
                -1936,
                -1921,
                -1906,
                -1891,
                -1876,
                -1861,
                -1845,
                -1830,
                -1815,
                -1800,
                -1785,
                -1770,
                -1755,
                -1740,
                -1725,
                -1710,
                -1695,
                -1679,
                -1664,
                -1649,
                -1634,
                -1619,
                -1604,
                -1589,
                -1573,
                -1558,
                -1543,
                -1528,
                -1513,
                -1498,
                -1482,
                -1467,
                -1452,
                -1437,
                -1422,
                -1407,
                -1391,
                -1376,
                -1361,
                -1346,
                -1331,
                -1315,
                -1300,
                -1285,
                -1270,
                -1255,
                -1239,
                -1224,
                -1209,
                -1194,
                -1178,
                -1163,
                -1148,
                -1133,
                -1117,
                -1102,
                -1087,
                -1072,
                -1056,
                -1041,
                -1026,
                -1011,
                -995,
                -980,
                -965,
                -950,
                -934,
                -919,
                -904,
                -889,
                -873,
                -858,
                -843,
                -827,
                -812,
                -797,
                -782,
                -766,
                -751,
                -736,
                -720,
                -705,
                -690,
                -674,
                -659,
                -644,
                -629,
                -613,
                -598,
                -583,
                -567,
                -552,
                -537,
                -521,
                -506,
                -491,
                -475,
                -460,
                -445,
                -429,
                -414,
                -399,
                -383,
                -368,
                -353,
                -337,
                -322,
                -307,
                -291,
                -276,
                -261,
                -245,
                -230,
                -215,
                -199,
                -184,
                -169,
                -153,
                -138,
                -123,
                -107,
                -92,
                -77,
                -61,
                -46,
                -31,
                -15,
                0,
                15,
                31,
                46,
                61,
                77,
                92,
                107,
                123,
                138,
                153,
                169,
                184,
                199,
                215,
                230,
                245,
                261,
                276,
                291,
                307,
                322,
                337,
                353,
                368,
                383,
                399,
                414,
                429,
                445,
                460,
                475,
                491,
                506,
                521,
                537,
                552,
                567,
                583,
                598,
                613,
                629,
                644,
                659,
                674,
                690,
                705,
                720,
                736,
                751,
                766,
                782,
                797,
                812,
                827,
                843,
                858,
                873,
                889,
                904,
                919,
                934,
                950,
                965,
                980,
                995,
                1011,
                1026,
                1041,
                1056,
                1072,
                1087,
                1102,
                1117,
                1133,
                1148,
                1163,
                1178,
                1194,
                1209,
                1224,
                1239,
                1255,
                1270,
                1285,
                1300,
                1315,
                1331,
                1346,
                1361,
                1376,
                1391,
                1407,
                1422,
                1437,
                1452,
                1467,
                1482,
                1498,
                1513,
                1528,
                1543,
                1558,
                1573,
                1589,
                1604,
                1619,
                1634,
                1649,
                1664,
                1679,
                1695,
                1710,
                1725,
                1740,
                1755,
                1770,
                1785,
                1800,
                1815,
                1830,
                1845,
                1861,
                1876,
                1891,
                1906,
                1921,
                1936,
                1951,
                1966,
                1981,
                1996,
                2011,
                2026,
                2041,
                2056,
                2071,
                2086,
                2101,
                2116,
                2131,
                2146,
                2161,
                2176,
                2191,
                2206,
                2221,
                2236,
                2251,
                2266,
                2281,
                2296,
                2311,
                2326,
                2340,
                2355,
                2370,
                2385,
                2400,
                2415,
                2430,
                2445,
                2460,
                2474,
                2489,
                2504,
                2519,
                2534,
                2549,
                2563,
                2578,
                2593,
                2608,
                2623,
                2638,
                2652,
                2667,
                2682,
                2697,
                2711,
                2726,
                2741,
                2756,
                2770,
                2785,
                2800,
                2815,
                2829,
                2844,
                2859,
                2873,
                2888,
                2903,
                2918,
                2932,
                2947,
                2962,
                2976,
                2991,
                3005,
                3020,
                3035,
                3049,
                3064,
                3078,
                3093,
                3108,
                3122,
                3137,
                3151,
                3166,
                3180,
                3195,
                3210,
                3224,
                3239,
                3253,
                3268,
                3282,
                3297,
                3311,
                3326,
                3340,
                3354,
                3369,
                3383,
                3398,
                3412,
                3427,
                3441,
                3455,
                3470,
                3484,
                3499,
                3513,
                3527,
                3542,
                3556,
                3570,
                3585,
                3599,
                3613,
                3628,
                3642,
                3656,
                3670,
                3685,
                3699,
                3713,
                3727,
                3742,
                3756,
                3770,
                3784,
                3798,
                3813,
                3827,
                3841,
                3855,
                3869,
                3883,
                3898,
                3912,
                3926,
                3940,
                3954,
                3968,
                3982,
                3996,
                4010,
                4024,
                4038,
                4052,
                4066,
                4080,
                4094,
                4108,
                4122,
                4136,
                4150,
                4164,
                4178,
                4192,
                4206,
                4220,
                4234,
                4248,
                4262,
                4276,
                4289,
                4303,
                4317,
                4331,
                4345,
                4359,
                4372,
                4386,
                4400,
                4414,
                4427,
                4441,
                4455,
                4469,
                4482,
                4496,
                4510,
                4523,
                4537,
                4551,
                4564,
                4578,
                4592,
                4605,
                4619,
                4633,
                4646,
                4660,
                4673,
                4687,
                4700,
                4714,
                4727,
                4741,
                4755,
                4768,
                4781,
                4795,
                4808,
                4822,
                4835,
                4849,
                4862,
                4876,
                4889,
                4902,
                4916,
                4929,
                4942,
                4956,
                4969,
                4982,
                4996,
                5009,
                5022,
                5035,
                5049,
                5062,
                5075,
                5088,
                5102,
                5115,
                5128,
                5141,
                5154,
                5167,
                5180,
                5194,
                5207,
                5220,
                5233,
                5246,
                5259,
                5272,
                5285,
                5298,
                5311,
                5324,
                5337,
                5350,
                5363,
                5376,
                5389,
                5402,
                5415,
                5428,
                5440,
                5453,
                5466,
                5479,
                5492,
                5505,
                5517,
                5530,
                5543,
                5556,
                5568,
                5581,
                5594,
                5607,
                5619,
                5632,
                5645,
                5657,
                5670,
                5683,
                5695,
                5708,
                5720,
                5733,
                5746,
                5758,
                5771,
                5783,
                5796,
                5808,
                5821,
                5833,
                5846,
                5858,
                5870,
                5883,
                5895,
                5908,
                5920,
                5932,
                5945,
                5957,
                5969,
                5982,
                5994,
                6006,
                6018,
                6031,
                6043,
                6055,
                6067,
                6079,
                6092,
                6104,
                6116,
                6128,
                6140,
                6152,
                6164,
                6176,
                6189,
                6201,
                6213,
                6225,
                6237,
                6249,
                6261,
                6273,
                6284,
                6296,
                6308,
                6320,
                6332,
                6344,
                6356,
                6368,
                6379,
                6391,
                6403,
                6415,
                6427,
                6438,
                6450,
                6462,
                6473,
                6485,
                6497,
                6508,
                6520,
                6532,
                6543,
                6555,
                6567,
                6578,
                6590,
                6601,
                6613,
                6624,
                6636,
                6647,
                6659,
                6670,
                6681,
                6693,
                6704,
                6716,
                6727,
                6738,
                6750,
                6761,
                6772,
                6784,
                6795,
                6806,
                6817,
                6828,
                6840,
                6851,
                6862,
                6873,
                6884,
                6895,
                6907,
                6918,
                6929,
                6940,
                6951,
                6962,
                6973,
                6984,
                6995,
                7006,
                7017,
                7028,
                7038,
                7049,
                7060,
                7071,
                7082,
                7093,
                7104,
                7114,
                7125,
                7136,
                7147,
                7157,
                7168,
                7179,
                7189,
                7200,
                7211,
                7221,
                7232,
                7242,
                7253,
                7264,
                7274,
                7285,
                7295,
                7306,
                7316,
                7327,
                7337,
                7347,
                7358,
                7368,
                7379,
                7389,
                7399,
                7410,
                7420,
                7430,
                7440,
                7451,
                7461,
                7471,
                7481,
                7491,
                7502,
                7512,
                7522,
                7532,
                7542,
                7552,
                7562,
                7572,
                7582,
                7592,
                7602,
                7612,
                7622,
                7632,
                7642,
                7652,
                7662,
                7671,
                7681,
                7691,
                7701,
                7711,
                7720,
                7730,
                7740,
                7750,
                7759,
                7769,
                7779,
                7788,
                7798,
                7807,
                7817,
                7827,
                7836,
                7846,
                7855,
                7865,
                7874,
                7883,
                7893,
                7902,
                7912,
                7921,
                7930,
                7940,
                7949,
                7958,
                7968,
                7977,
                7986,
                7995,
                8005,
                8014,
                8023,
                8032,
                8041,
                8050,
                8059,
                8068,
                8078,
                8087,
                8096,
                8105,
                8114,
                8123,
                8131,
                8140,
                8149,
                8158,
                8167,
                8176,
                8185,
                8193,
                8202,
                8211,
                8220,
                8228,
                8237,
                8246,
                8255,
                8263,
                8272,
                8280,
                8289,
                8298,
                8306,
                8315,
                8323,
                8332,
                8340,
                8349,
                8357,
                8365,
                8374,
                8382,
                8391,
                8399,
                8407,
                8416,
                8424,
                8432,
                8440,
                8449,
                8457,
                8465,
                8473,
                8481,
                8489,
                8497,
                8505,
                8514,
                8522,
                8530,
                8538,
                8546,
                8554,
                8561,
                8569,
                8577,
                8585,
                8593,
                8601,
                8609,
                8616,
                8624,
                8632,
                8640,
                8647,
                8655,
                8663,
                8670,
                8678,
                8686,
                8693,
                8701,
                8708,
                8716,
                8723,
                8731,
                8738,
                8746,
                8753,
                8761,
                8768,
                8775,
                8783,
                8790,
                8797,
                8805,
                8812,
                8819,
                8826,
                8834,
                8841,
                8848,
                8855,
                8862,
                8869,
                8876,
                8883,
                8890,
                8897,
                8904,
                8911,
                8918,
                8925,
                8932,
                8939,
                8946,
                8953,
                8960,
                8966,
                8973,
                8980,
                8987,
                8993,
                9000,
                9007,
                9013,
                9020,
                9027,
                9033,
                9040,
                9046,
                9053,
                9059,
                9066,
                9072,
                9079,
                9085,
                9092,
                9098,
                9104,
                9111,
                9117,
                9123,
                9130,
                9136,
                9142,
                9148,
                9154,
                9161,
                9167,
                9173,
                9179,
                9185,
                9191,
                9197,
                9203,
                9209,
                9215,
                9221,
                9227,
                9233,
                9239,
                9245,
                9250,
                9256,
                9262,
                9268,
                9274,
                9279,
                9285,
                9291,
                9296,
                9302,
                9308,
                9313,
                9319,
                9324,
                9330,
                9335,
                9341,
                9346,
                9352,
                9357,
                9363,
                9368,
                9373,
                9379,
                9384,
                9389,
                9395,
                9400,
                9405,
                9410,
                9415,
                9421,
                9426,
                9431,
                9436,
                9441,
                9446,
                9451,
                9456,
                9461,
                9466,
                9471,
                9476,
                9481,
                9486,
                9490,
                9495,
                9500,
                9505,
                9510,
                9514,
                9519,
                9524,
                9528,
                9533,
                9538,
                9542,
                9547,
                9551,
                9556,
                9560,
                9565,
                9569,
                9574,
                9578,
                9583,
                9587,
                9591,
                9596,
                9600,
                9604,
                9609,
                9613,
                9617,
                9621,
                9625,
                9630,
                9634,
                9638,
                9642,
                9646,
                9650,
                9654,
                9658,
                9662,
                9666,
                9670,
                9674,
                9678,
                9681,
                9685,
                9689,
                9693,
                9697,
                9700,
                9704,
                9708,
                9711,
                9715,
                9719,
                9722,
                9726,
                9729,
                9733,
                9736,
                9740,
                9743,
                9747,
                9750,
                9754,
                9757,
                9760,
                9764,
                9767,
                9770,
                9774,
                9777,
                9780,
                9783,
                9786,
                9789,
                9793,
                9796,
                9799,
                9802,
                9805,
                9808,
                9811,
                9814,
                9817,
                9820,
                9823,
                9825,
                9828,
                9831,
                9834,
                9837,
                9839,
                9842,
                9845,
                9847,
                9850,
                9853,
                9855,
                9858,
                9861,
                9863,
                9866,
                9868,
                9871,
                9873,
                9875,
                9878,
                9880,
                9883,
                9885,
                9887,
                9890,
                9892,
                9894,
                9896,
                9898,
                9901,
                9903,
                9905,
                9907,
                9909,
                9911,
                9913,
                9915,
                9917,
                9919,
                9921,
                9923,
                9925,
                9927,
                9929,
                9930,
                9932,
                9934,
                9936,
                9937,
                9939,
                9941,
                9942,
                9944,
                9946,
                9947,
                9949,
                9950,
                9952,
                9953,
                9955,
                9956,
                9958,
                9959,
                9960,
                9962,
                9963,
                9964,
                9966,
                9967,
                9968,
                9969,
                9971,
                9972,
                9973,
                9974,
                9975,
                9976,
                9977,
                9978,
                9979,
                9980,
                9981,
                9982,
                9983,
                9984,
                9985,
                9986,
                9986,
                9987,
                9988,
                9989,
                9989,
                9990,
                9991,
                9991,
                9992,
                9993,
                9993,
                9994,
                9994,
                9995,
                9995,
                9996,
                9996,
                9997,
                9997,
                9997,
                9998,
                9998,
                9998,
                9999,
                9999,
                9999,
                9999,
                9999,
                10000,
                10000,
                10000,
                10000,
                10000,
                10000
            };
        }

        public static int getIndex(long nom, long den)
        {
            nom *= (long) LUTSinCos.NOM_MUL;
            den *= 62832L; //2PI
            int num = (int) (nom / den);
            return num & LUTSinCos.MASK;
        }

        public static int getIndex(LFloat val)
        {
            return getIndex(val._val, LFloat.Precision);
        }
    }
}